اذهب إلى المحتوى
  • 0

روابط react-router لا تعمل عند تحديث الصفحة

Adam Ebrahim

السؤال

أعمل على مشروع صغير بإستخدام react.js واستخدم react-router لجعل الموقع SPA، وكل شيء يعمل على أكمل وجهه عندما أضغط على رابط معين يتم تحميله بصورة صحيحة، لكن عند الدخول إلى الرابط من خلال كتابته في أعلى المتصفح أو عند تحديث الصفحة لا يعمل وأحصل على الخطأ 

Cannot GET /persons

ولا أستطيع الدخول إلى الصفحة إلا إذا كتبت علامة # قبل الرابط هكذا:

localhost:8000/#/persons 
var routes = (
    <Route name="home" path="/" handler={Home}>
        <Route name="persons" path="/persons" handler={Persons}/>
        <NotFoundRoute handler={NotFound}/>
    </Route>
);

Router.run(routes, Router.HistoryLocation, function (Handler) {
  React.render(<Handler/>, document.body);
});

هذا هو الكود الخاص بال react-router

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يمكنك إستخدام React Router النسخة الجديدة بهذه الطريقة، حيث أن الدالة run أصبحت غير صالحة في النسخة الجديدة، وغير محبذ ان تستخدمها.

import React from 'react';
import ReactDOM from 'react-dom';

import { BrowserRouter, Route, Link, Switch } from 'react-router-dom';

function Home() {
  return <h1>Home</h1>;
}

function About() {
  return <h1>About Us</h1>;
}

ReactDOM.render(
  <BrowserRouter>
    <div>
      <ul>
        <li>
          <Link to="/">Home</Link>
        </li>
        <li>
          <Link to="/about">About</Link>
        </li>
      </ul>
    </div>
    <Switch>
      <Route path="/about">
        <About />
      </Route>
      <Route path="/">
        <Home />
      </Route>
    </Switch>
  </BrowserRouter>,
  document.getElementById('root')
);

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

أنت تستخدم نسخة قديمة من المكتبة قم بتحديث الى النسخة الاخيرة 

import React from "react";
import {
  BrowserRouter as Router,
  Switch,
  Route,
  Link
} from "react-router-dom";

export default function App() {
  return (
    <Router>
        <Switch>
          <Route name="home" exact path="/">
            <Home />
          </Route>
          <Route name="persons" path="/persons">
            <Persons />
          </Route>
          <Route >
            <NotFound />
          </Route>
        </Switch>
    </Router>
  );
}

او يمكنك كتابة الكود بهذه الطريقة فهي أقرب لما اعتدت عليه فقط هنا ال handler تغير وأصبح اسمه component

import React from "react";
import {
  BrowserRouter as Router,
  Switch,
  Route,
  Link
} from "react-router-dom";

export default function App() {
  return (
    <Router>
        <Switch>
          <Route name="home" exact path="/" component={Home}>
          
          <Route name="persons" path="/persons" component={Persons}>
        
          <Route component={NotFound}>
         
        </Switch>
    </Router>
  );
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...