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组件