如何将道具传递到React Router路线

时间:2019-12-09 10:45:27

标签: javascript reactjs firebase react-router components

我正在尝试将数据从App传递到Home组件,但是我不知道在这种情况下怎么办。

在我的App.js中,我具有firebase身份验证,该身份验证可在登录时保存电子邮件。 我需要将其传递给Home组件,但我不知道在这种情况下如何。我知道如何通过执行类似<Home user={user}>这样的事情来传递数据,但现在还不行。

我应该在哪里将传递数据放在这样的代码中?

<Route exact  path="/" component={Home} />

我将代码附加在CodeSandbox中

https://codesandbox.io/s/heuristic-mestorf-8qbx9?fontsize=14&hidenavigation=1&theme=dark

有App.js Home.js和Login.js

我在App.js中所做的是呈现页面,并且仅在登录时才能看到页面。 Login.js使用firebase auth登录,最后使用Home组件登录,我想打印出用户的电子邮件。

有人可以给我提示或帮我吗?我将非常感激:))

1 个答案:

答案 0 :(得分:0)

要将道具传递到React-Router路线中,必须使用略有不同的语法

<Route
  exact
  path='/'
  render={(props) => <Home {...props} auth={authState} />}
/>

在这种情况下,authState将是您的Firebase用户数据。可以是布尔值,也可以是您想作为道具传递的任何其他数据。

然后在您的Home组件中,您将收到道具并可以随意使用它:

function Home({auth}) {
  return (
    <div>
      {auth ? <h1>Logged In</h1> : <h1>Logged Out</h1>}
    </div>
  );
}