我创建了一个带有protected route的react应用。现在App在舞台上,我不能有任何强烈的变化。问题是在我的App.js
组件中我有一个条件
<div className="App">
{
(props.auth) ? <MainView /> : <Signin />
}
</div>
MainView
组件中包含了所有的路由。props.auth
为还原态。这工作得很好,没有任何挑战。但是现在我想使用SignUp
组件,当或如果用户想要创建帐户时呈现。但是我提到我的路由是用MainView
组件写的。因此,如果我填充singup路由,我只看到<SignIn>
组件,因为app.js
中的else条件。如何调用<SignUp>
组件而不改变更多的结构或以更简单的方式。
更具体地说
<div className="App">
{
(props.auth) ? <MainView /> : <Signin /> || <SignUp /> //I want to render both of them if user not logged in. And they both are seperate component.
}
</div>
你可以把这两个组件放在一个div
或使用一个React Fragment。
<div className="App">
{
(props.auth) ? <MainView /> : <> <Signin /> <SignUp /> </> // Using a React fragment
}
</div>
<div className="App">
{
(props.auth) ? <MainView /> : <div> <Signin /> <SignUp /> </div> // Using a div
}
</div>
更新:
<div className="App">
{
(props.auth) ? <MainView /> : <>
flag ? <Signin /> : <SignUp />
</> // The flag must change values depending on what the user chooses to see; Its default value may be for SignIn
}
</div>
您可以将这些组件提取到一个新的组件中,如Login page,并在else中呈现。
或者将组件封装到一个片段中:
<div className="App">
{
(props.auth) ? <MainView /> :
<>
<Signin />
<SignUp />
</>
}
</div>
用react fragment或div包装。
<div className="App">
{
(props.auth) ? <MainView /> : <> <Signin /> <SignUp /> </>
}