Javascript React中的状态不随setState方法更改
我试图在我的一个函数中用Javascript React中的状态不随setState方法更改,javascript,reactjs,function,setstate,react-state,Javascript,Reactjs,Function,Setstate,React State,我试图在我的一个函数中用setState方法更新我的状态,但状态并没有改变。我还在该函数中使用if语句来告诉setState何时实际更改状态。如果语句为true但我的状态仍然没有改变,我会在控制台中返回正确的消息。什么会导致错误 我的职能和状态: constructor(props) { super(props); this.state = { isregistered: false } } handleValidate = (validate) =&g
setState
方法更新我的状态,但状态并没有改变。我还在该函数中使用if
语句来告诉setState何时实际更改状态。如果语句为true
但我的状态仍然没有改变,我会在控制台中返回正确的消息。什么会导致错误
我的职能和状态:
constructor(props) {
super(props);
this.state = {
isregistered: false
}
}
handleValidate = (validate) => {
const state1 = this.state
console.log('state1', state1)
const validate1 = validate
console.log('l]plik validate', validate1)
if ( validate.length != 0){
this.setState({
isregistered: true
})
console.log('onregatud', this.state.isregistered)
}
else{
console.log('mitteregatud', this.state.isregistered)
}
}
这不是错误,setState是异步的。如果要在setState之后立即检查状态,则需要传递回调:
this.setState({myState : newState}, () => console.log(this.state.myState))
这不是错误,setState是异步的。如果要在setState之后立即检查状态,则需要传递回调:
this.setState({myState : newState}, () => console.log(this.state.myState))
setState()
操作是异步的,在setState()
将isregistered
的值从false
设置为true
之前,将执行console.log()
我们可以通过两种方式解决这个问题:
通过将回调函数传递给setState()
使用async wait
async function handleValidate(validate) {
const state1 = this.state
const validate1 = validate
if ( validate.length != 0){
await this.setState({ isregistered: true})
// More code here based on state outside callback
console.log('onregatud', this.state.isregistered)
} else {
console.log('mitteregatud', this.state.isregistered)
}
}
在setState()
setState()
操作是异步的,在setState()
将isregistered
的值从false
设置为true
之前,将执行console.log()
我们可以通过两种方式解决这个问题:
通过将回调函数传递给setState()
使用async wait
async function handleValidate(validate) {
const state1 = this.state
const validate1 = validate
if ( validate.length != 0){
await this.setState({ isregistered: true})
// More code here based on state outside callback
console.log('onregatud', this.state.isregistered)
} else {
console.log('mitteregatud', this.state.isregistered)
}
}
在setState()
请显示render
此功能未连接到我的UI按钮或任何东西。句柄验证最终在方法componentDidMount下调用,并在用户进入该页面时启动。这是否回答了您的问题?请显示render
此功能未连接到我的UI按钮或任何东西。句柄验证最终在方法componentDidMount下调用,并在用户进入该页面时启动。这是否回答了您的问题?