微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ReactJs中的Router

如何解决ReactJs中的Router

我对React Js很陌生,并且陷入了一个问题。 “根”组件下有3个组件,我要执行的操作是单击要显示一个单个组件的三个组件中的任何一个。但问题是单击后已加载所需的组件,但其他组件仍保留在页面上。请在这里提出需要做什么。

    <div className="App">
      <Navbar />
     <Router>
      <div className="container" style={{ marginTop: '20px' }}>
      <div className="row">
        <div className="col s4">
          <AddCustomer />
        </div>
        <div className="col s4">
          <Switch>
            <Route exact path="/viewcustomers" component={ViewCustomer} />
          </Switch>
        </div>
        <div className="col s2 offset-s1">
          <Notifications />
        </div>
        </div>
         <div className="row">
        <div className="col s4">
          < EditCustomer />
         </div>
        </div>
       </div>
      </Router>
       </div>

此处继续加载ViewCustomer的路径,但其他组件仍然存在。我只希望同时显示一个组件。

解决方法

您在这里。您应该使用RouterRoute组件为每个视图/页面渲染组件。 Link库中的react-router-dom组件应用于在视图之间导航。我还建议从Router组件中删除大部分HTML。

const App = () => (
  <div className="App">
    <Navbar />
       <Router>
         <Switch>
           <Route component={HomeView} exact path='/' />
           <Route component={CustomerView} exact path='/viewcustomers' />
         </Switch>
    </Router>
  </div>
);

// Component to render when at '/'
const HomeView = () => {
  return (
    <div className="container" style={{ marginTop: '20px' }}>
      <div className="row">
        <div className="col s4">
          <AddCustomer />
        </div>
        <div className="col s4">
          <Link to='/viewcustomers' />
        </div>
        <div className="col s2 offset-s1">
          <Notifications />
        </div>
        </div>
         <div className="row">
        <div className="col s4">
          <EditCustomer />
        </div>
      </div>
    </div>
  );
};

// Component to render when at '/viewcustomers'
const CustomerView = () => {
  // Create customer view here
  return 'customers';
};
,

伙伴,您对React Router的了解都弄糟了。 您的代码存在问题,因为其他组件(<AddCustomer /><EditCustomer />)位于Switch外部,并且未标记为任何URL模式,因此会以您所在的URL路径进行渲染。

您的代码应如下所示:

    <BrowserRouter>
        <div className="App">
            <Navbar />
            <Switch>
                <Route exact path="/addcustomers" component={AddCustomer} />
                <Route exact path="/viewcustomers" component={ViewCustomer} />
                <Route exact path="/editcustomers" component={EditCustomer} />
            </Switch>
        </div>
    </BrowserRouter>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。