gpt4 book ai didi

javascript - 在函数中设置状态不会触发重新渲染

转载 作者:行者123 更新时间:2023-12-01 03:39:31 27 4
gpt4 key购买 nike

我想在用户登录时创建加载指示器,但由于某种原因,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>
)
}
}

为什么 JSX 会忽略 waitingOnLogin

最佳答案

不要直接使用setState改变状态。 setState 调用重新渲染,因此之后您的更改将反射(reflect),但直接分配不会发生重新渲染,因此不会反射(reflect)任何更改。另外,您应该始终使用 setState 来更改状态

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

关于javascript - 在函数中设置状态不会触发重新渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44002247/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com