Reactjs 该州没有';不要像应该的那样更新
用于更新状态的简单输入字段 如果输入5并单击“保证”,则“之前”日志显示0,但“之后”日志也显示0。如果你再次点击按钮,它会显示5,并且会继续这样。就像它总是在后面 为什么呢 App.jsReactjs 该州没有';不要像应该的那样更新,reactjs,setstate,Reactjs,Setstate,用于更新状态的简单输入字段 如果输入5并单击“保证”,则“之前”日志显示0,但“之后”日志也显示0。如果你再次点击按钮,它会显示5,并且会继续这样。就像它总是在后面 为什么呢 App.js state = { fundGoal: 1000, amountFunded: 0 } getAmount = amount => { console.log('before', this.state.amountFunded) const parsedAmou
state = {
fundGoal: 1000,
amountFunded: 0
}
getAmount = amount => {
console.log('before', this.state.amountFunded)
const parsedAmount = parseInt(amount)
this.setState(prevState => ({
amountFunded: prevState.amountFunded + parsedAmount
}))
console.log('after', this.state.amountFunded)
}
在另一个组件中形成
getAmount = e => {
e.preventDefault()
const value = e.target.elements.amount.value
this.props.getAmount(value)
e.target.elements.amount.value = ''
}
因为
setState
是一个异步调用。事务完成后会有一个回调
this.setState(prevState => ({
amountFunded: prevState.amountFunded + parsedAmount
}), () => console.log('after', this.state.amountFunded))
setState()函数以异步方式运行,因此,如果希望在setState()完成运行后看到更新的状态,可以按如下方式将回调函数传递给setState
getAmount = amount => {
console.log('before', this.state.amountFunded)
const parsedAmount = parseInt(amount)
this.setState(prevState => ({
amountFunded: prevState.amountFunded + parsedAmount
}), () => console.log('after', this.state.amountFunded));
}
哦,所以这不是一步落后,只是我没有正确记录它。。。谢谢!