Javascript 在React中有条件地呈现组件
我根据用户是否登录在主页上有条件地呈现组件。这是我的密码Javascript 在React中有条件地呈现组件,javascript,reactjs,Javascript,Reactjs,我根据用户是否登录在主页上有条件地呈现组件。这是我的密码 class Wrapper extends React.Component{ constructor(props){ super(props); } render(){ const comp = this.state.loggedIn ? ( <BrowserRouter> <div className="wr
class Wrapper extends React.Component{
constructor(props){
super(props);
}
render(){
const comp = this.state.loggedIn ? (
<BrowserRouter>
<div className="wrapper">
<Header state={props.state}/>
<CoreLogged state={props.state}/>
</div>
</BrowserRouter>
):(
<BrowserRouter>
<div className="wrapper">
<Header state={props.state}/>
<CoreUnlogged state={props.state}/>
</div>
</BrowserRouter>
);
return (comp);
}
}
export default Wrapper
类包装器扩展React.Component{
建造师(道具){
超级(道具);
}
render(){
const comp=this.state.loggedIn(
):(
);
返回(comp);
}
}
导出默认包装器
由于header组件是无条件呈现的,因此如何重构此代码以仅有条件地呈现核心部分?
我是个新来回答这个问题的人。简单地把常见的东西拿出来,然后用
{}
做条件反射。也可以不使用变量直接返回:
render() {
return <BrowserRouter>
<div className="wrapper">
<Header state={ props.state } />
{ this.state.loggedIn ? (
<CoreLogged state={ props.state } />
) : (
<CoreUnlogged state={ props.state } />
)
}
</div>
</BrowserRouter>;
}
render() {
const MainComp = this.state.loggedIn ? CoreLogged : CoreUnlogged;
return <BrowserRouter>
<div className="wrapper">
<Header state={ props.state } />
<MainComp state={ props.state } />
</div>
</BrowserRouter>;
}
render(){
返回
{this.state.loggedIn(
) : (
)
}
;
}
如果组件具有相同的确切属性,您也可以将组件本身放入变量中:
render() {
return <BrowserRouter>
<div className="wrapper">
<Header state={ props.state } />
{ this.state.loggedIn ? (
<CoreLogged state={ props.state } />
) : (
<CoreUnlogged state={ props.state } />
)
}
</div>
</BrowserRouter>;
}
render() {
const MainComp = this.state.loggedIn ? CoreLogged : CoreUnlogged;
return <BrowserRouter>
<div className="wrapper">
<Header state={ props.state } />
<MainComp state={ props.state } />
</div>
</BrowserRouter>;
}
render(){
const MainComp=this.state.loggedIn?CoreLogged:CoreUnlogged;
返回
;
}
请注意,在这种情况下,变量必须以大写字母开头,否则React将尝试将其作为内置HTML组件呈现。只需取出常用的内容并将其拉出,然后使用
{}
执行条件转换。也可以不使用变量直接返回:
render() {
return <BrowserRouter>
<div className="wrapper">
<Header state={ props.state } />
{ this.state.loggedIn ? (
<CoreLogged state={ props.state } />
) : (
<CoreUnlogged state={ props.state } />
)
}
</div>
</BrowserRouter>;
}
render() {
const MainComp = this.state.loggedIn ? CoreLogged : CoreUnlogged;
return <BrowserRouter>
<div className="wrapper">
<Header state={ props.state } />
<MainComp state={ props.state } />
</div>
</BrowserRouter>;
}
render(){
返回
{this.state.loggedIn(
) : (
)
}
;
}
如果组件具有相同的确切属性,您也可以将组件本身放入变量中:
render() {
return <BrowserRouter>
<div className="wrapper">
<Header state={ props.state } />
{ this.state.loggedIn ? (
<CoreLogged state={ props.state } />
) : (
<CoreUnlogged state={ props.state } />
)
}
</div>
</BrowserRouter>;
}
render() {
const MainComp = this.state.loggedIn ? CoreLogged : CoreUnlogged;
return <BrowserRouter>
<div className="wrapper">
<Header state={ props.state } />
<MainComp state={ props.state } />
</div>
</BrowserRouter>;
}
render(){
const MainComp=this.state.loggedIn?CoreLogged:CoreUnlogged;
返回
;
}
请注意,在这种情况下,变量必须以大写字母开头,否则React将尝试将其呈现为内置HTML组件