使用 setState() 后 React Native 状态未更新
React Native state not updating after using setState()
我在 React Native 的 Class 中有一个状态和函数,我用它来创建一个计数器来记录已完成的任务数。在我的 updateTaskCountHandler() 函数中,taskCount 成功地将 +1 计数为先前的值,但是在将 completeTasks 设置为新值后控制台记录该值时,它没有显示 completeTasks 已成功更新为新值。如何正确更新 completeTasks 的状态?
state = {
completeTasks: 0
}
updateTaskCountHandler (className) {
let taskCount = 0;
taskCount = taskCount + 1;
this.setState({
completeTasks: taskCount
})
console.log('completeTasks:' + this.state.completeTasks);
}
<ScrollView style={styles.taskitems}>
<TaskCard clicked={() => this.updateTaskCountHandler("task1")} id='task1' chore='Get Dressed'/>
</ScrollView>
如果你想在你的 setState 逻辑之后看到状态结果,你应该在 setState 回调中记录你的状态,因为 react 的 setState 函数是异步的。
尝试在 this.setState 函数之后使用 this.forceUpdate()
。这将导致 React 实际重新渲染父组件,父组件会将新的 props 传递给子组件
如果想看到状态的变化,需要使用回调如下:
this.setState({
completeTasks: taskCount
},()=>{
console.log('completeTasks:' + this.state.completeTasks);
})
我在 React Native 的 Class 中有一个状态和函数,我用它来创建一个计数器来记录已完成的任务数。在我的 updateTaskCountHandler() 函数中,taskCount 成功地将 +1 计数为先前的值,但是在将 completeTasks 设置为新值后控制台记录该值时,它没有显示 completeTasks 已成功更新为新值。如何正确更新 completeTasks 的状态?
state = {
completeTasks: 0
}
updateTaskCountHandler (className) {
let taskCount = 0;
taskCount = taskCount + 1;
this.setState({
completeTasks: taskCount
})
console.log('completeTasks:' + this.state.completeTasks);
}
<ScrollView style={styles.taskitems}>
<TaskCard clicked={() => this.updateTaskCountHandler("task1")} id='task1' chore='Get Dressed'/>
</ScrollView>
如果你想在你的 setState 逻辑之后看到状态结果,你应该在 setState 回调中记录你的状态,因为 react 的 setState 函数是异步的。
尝试在 this.setState 函数之后使用 this.forceUpdate()
。这将导致 React 实际重新渲染父组件,父组件会将新的 props 传递给子组件
如果想看到状态的变化,需要使用回调如下:
this.setState({
completeTasks: taskCount
},()=>{
console.log('completeTasks:' + this.state.completeTasks);
})