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

السؤال

نشر

أعمل على مشروع صغير بإستخدام 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...