javascript - React 无法动态渲染正确的组件

标签 javascript reactjs

这是我的 App.js

class App extends React.Component {
    constructor(props) {
        super(props);
        this.state = {loggedIn: true}
    }

    render() {
        return (
            <div>
                <Helmet>
                    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
                </Helmet>
                <Wrapper state={this.state.loggedIn}/>
            </div>

        )

    }
}

这会将登录状态传递给包装器组件。该包装器动态确定要渲染哪个组件。这是包装器代码,

class Wrapper extends React.Component {

    render() {
        const MainComp = this.props.state.loggedIn ? Logged : Unlogged;
        return (
            <BrowserRouter>
                <div className="wrapper">
                    <Header state={this.props.state}/>
                    <MainComp state={this.props.state}/>
                </div>
            </BrowserRouter>
        );
    }
}

问题是,即使登录变量为 false,也会呈现正确的组件。但是,当我将其更改为 true 时,它​​仍然继续呈现旧的或不正确的组件。 我在这里做错了什么?

最佳答案

您正在传递 state={this.state.loggedIn} ,这将是 true 或 false 但在你的 child 中,你会得到 this.props.state.loggedIn ,它根本没有定义,因为 state ===loggedIn

class App extends React.Component {
    constructor(props) {
        super(props);
        this.state = {loggedIn: true}
    }

    render() {
        return (
            <div>
                <Helmet>
                    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
                </Helmet>
                <Wrapper state={this.state}/>
            </div>

        )

    }
}

使用子类上的 props 调用构造函数。

class Wrapper extends React.Component 
{
  constructor(props)
  {
    super(props);
  }

    render() {
        const MainComp = this.props.state.loggedIn ? Logged : Unlogged;
        return (
            <BrowserRouter>
                <div className="wrapper">
                    <Header state={this.props.state}/>
                    <MainComp state={this.props.state}/>
                </div>
            </BrowserRouter>
        );
    }
}

关于javascript - React 无法动态渲染正确的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50709961/

相关文章:

javascript - 那么数组推送在 Promise 中不起作用吗?

javascript - 让我的日期选择器传递他的值(value)时遇到麻烦

javascript - 在 Canvas 上逐步绘制线条动画

javascript - 在鼠标移动时从 Canvas 获取像素颜色

javascript - 来自第三方黑客的基于 JavaScript 浏览器的游戏有多安全

javascript - 如何从数组返回今天、今天和明天之前的日期数

javascript - 在 React-Boilerplate 中使用 Firebase 身份验证时,服务工作线程捕获对 Google 的 __/auth 请求

javascript - react : How to Import and use function to component with setState?

javascript - 使用 RabbitMq 和 websockets 扩展应用程序

javascript - Wepack 错误 : Adjacent JSX elements must be wrapped in an enclosing tag