【问题标题】:Button Navigation with React Router使用 React Router 进行按钮导航
【发布时间】:2020-05-18 05:17:41
【问题描述】:

页眉:我正在尝试使用 onClick 方法从 Material UI 按钮导航到新页面。我对在我的 handleClickSignIn 函数中写什么感到困惑。

我的 Header.tsx 文件中的代码 sn-p:

const HatsPage = () => (
  <div>
    <h1>
      HATS PAGEHH
    </h1>
  </div>
)

function handleClickSignIn() {
  <Route component= {HatsPage}></Route>
}

const Header = () => (
  <div className = 'header'>‚
    <h1 className = 'title'>
      Instaride
    </h1>
    <div className="header-right">
      <Button onClick= {handleClickSignIn}> Sign In</Button>
      <Button> Contact</Button>
    </div>
  </div>
);

这不起作用,我收到如下错误:

预期的赋值或函数,但得到了表达式

【问题讨论】:

    标签: javascript reactjs react-native react-router material-ui


    【解决方案1】:

    您遇到的问题是每次单击Sign In 按钮时都会生成一个Route 组件。

    相反,您应该像这样使用Link 组件:

    const Header = () => (
      <div className = 'header'>‚
      <h1 className = 'title'>
        Instaride</h1>
      <div className="header-right">
        <Link to={"/login"}> Sign In</Link>
        <Button> Contact</Button>
      </div>
    </div>
    

    这将创建一个链接组件,当单击该链接组件时,它将指向/login URL。然后,要在该 URL 处呈现组件,您还需要定义 Route。您已经这样做了,但需要像这样定义路径:

    <Route path={"/login"} component={HatsPage} />
    

    然后请注意,这个Route、您的Header 组件和任何Link 都需要嵌套在BrowserRouter 的实例中。

    【讨论】:

    • 1.我应该在哪里写这个 行? 2.所以如果我在我的主页中调用我的标题,我需要再次用BrowserRouter包装它吗?即使整个应用程序都被它包裹在我的 App.tsx 或 Index.tsk 文件中?
    • 您只需要一个BrowserRouter 实例,所以不需要。不过,您确实需要在它的实例中使用 Header 组件。这是一个pen,应该可以帮助你!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多