Javascript 函数中的设置状态不为';不要触发重发器

Javascript 函数中的设置状态不为';不要触发重发器,javascript,reactjs,if-statement,jsx,Javascript,Reactjs,If Statement,Jsx,我想在用户登录时设置一个加载指示器,但由于某些原因,JSX条件元素不会更新: class LoginPage extends Component { constructor (props) { super(props) this.state = { waitingOnLogin: false, ... } this.handleLogin = this.handleLogin.bind(this) } handleLogi

我想在用户登录时设置一个加载指示器,但由于某些原因,JSX条件元素不会更新:

class LoginPage extends Component {

  constructor (props) {
    super(props)
    this.state = {
      waitingOnLogin: false,
      ...
    }

    this.handleLogin = this.handleLogin.bind(this)
  }

  handleLogin (event) {
    event.preventDefault()
    this.state.waitingOnLogin = true
    this.props.userActions.login(this.state.email, this.state.password)
  }

  render() {
    return (
      <div className='up'>
        <form onSubmit={e => this.handleLogin(e)}> ... </form>
        {this.state.waitingOnLogin && <Spinner message='Logging you in'/>} // This does not appear
      </div>
    )
  }
}
类登录页扩展组件{
建造师(道具){
超级(道具)
此.state={
waitingOnLogin:错,
...
}
this.handleLogin=this.handleLogin.bind(this)
}
handleLogin(事件){
event.preventDefault()
this.state.waitingOnLogin=true
this.props.userActions.login(this.state.email,this.state.password)
}
render(){
返回(
这个.handleLogin(e)}>。。。
{this.state.waitingOnLogin&&}//这不会出现
)
}
}

为什么JSX忽略了
waitingOnLogin

始终使用
setState
更新
状态
值,切勿直接变异
状态
值,请使用以下方法:

handleLogin (event) {
    event.preventDefault()
    this.setState({ waitingOnLogin: true });
    this.props.userActions.login(this.state.email, this.state.password)
}
根据:

永远不要直接改变this.state,因为之后调用setState()可能会 替换你所做的变异。把这个国家当作 不变的


检查有关的详细信息。

始终使用
设置状态
更新
状态
值,切勿直接改变
状态
值,请使用以下方法:

handleLogin (event) {
    event.preventDefault()
    this.setState({ waitingOnLogin: true });
    this.props.userActions.login(this.state.email, this.state.password)
}
根据:

永远不要直接改变this.state,因为之后调用setState()可能会 替换你所做的变异。把这个国家当作 不变的


检查有关的详细信息。

不要直接使用
设置状态
。setState调用RERERENDER,因此在此之后,您的更改将反映出来,但在直接分配中,不会出现任何
RERERENDER
,因此不会反映任何更改。此外,您还应始终使用
setState
更改状态

handleLogin (event) {
    event.preventDefault()
    this.setState({waitingOnLogin:true});
    this.props.userActions.login(this.state.email, this.state.password)
  }

不要直接使用
setState
改变状态。setState调用RERERENDER,因此在此之后,您的更改将反映出来,但在直接分配中,不会出现任何
RERERENDER
,因此不会反映任何更改。此外,您还应始终使用
setState
更改状态

handleLogin (event) {
    event.preventDefault()
    this.setState({waitingOnLogin:true});
    this.props.userActions.login(this.state.email, this.state.password)
  }