javascript - 在按钮上渲染一个组件,单击 React ES6

标签 javascript reactjs ecmascript-6

我想在单击按钮时打开/渲染/显示组件。我试图通过改变状态来做到这一点,但无法做到这一点。

我想在单击按钮时渲染组件。状态发生更改,但组件未呈现。

    export default class NewNav extends React.Component {
    constructor(props) {
    super(props);
    this.state = {
      date: new Date(),
      login: false
    };
    this.handleClick = this.handleClick.bind(this);

  }

  handleClick(e) {
    this.state.login = true;
    }

  render() {

    const style = {
      margin: 12
    };

    return (
      <MuiThemeProvider>

        <div className="top-bar">
          <div className="top-bar-left">
            <ul className="menu">
              <li>
                <RaisedButton
                  label="Sign Up"
                  style={style}
                  primary={false}
                  onClick={this.handleClick}
                  labelColor="#FFF"
                  backgroundColor="#00E676"/>
              </li>

            </ul>
          </div>
          <div className="top-bar-right">

            <ul className="menu">

              <li>
                <RaisedButton
                  label="Log In"
                  primary={true}
                  className="btnLogin"
                  backgroundColor="#3AAA35"></RaisedButton>

              </li>

              <li>
                <RaisedButton
                  label="Sign Up"
                  primary={false}
                  labelColor="#FFF"
                  backgroundColor="#00E676"/>

              </li>

            </ul>
            {this.state.login
              ? <FirstPage/>
              : null
}

          </div>

        </div>
      </MuiThemeProvider>

    );
  }
}

最佳答案

不要直接设置state,使用setState方法。否则,React 无法感知状态变化,也不会重新渲染组件。

所以代替这个:

  handleClick(e) {
    this.state.login = true;
  }

使用这个:

  handleClick(e) {
    this.setState({login: true});
  }

关于javascript - 在按钮上渲染一个组件,单击 React ES6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42387286/

相关文章:

javascript - 带有 Typescript 和 react-redux 的有状态组件 : Argument of type 'typeof MyClass' is not assignable to parameter of type Component

javascript - 使用 dangerouslySetInnerHtml 呈现内容时如何使用 React 链接?

javascript - 等待一次获取完成后再开始下一次获取

javascript - 如何从javascript中的索引属性获取值?

javascript - DataTables Bootstrap 不工作

javascript - 使用 RenderControllers 隐藏/显示多个表面的最佳方式

javascript - 如何理解这个语法呢? [a,b] = [b,a]?

javascript - 使用RxJS和axios,如何在React组件中获取onClick数据?

javascript - 我如何使用扩展器和收集运算符在 ES6 中实现以下功能?

php - Internet Explorer 无法使用基于 php 生成的选择选项值的 JavaScript 函数