我正在尝试使用DidMount中的localStorage值更新状态,但它没有更新:
type Props = {
};
type State = {
id_evaluation: string,
};
class Evaluation extends Component < Props, State > {
state = {
id_evaluation: '',
}
componentDidMount() {
const id_eval = getEvaluation();
console.log('1 - ', id_eval)
this.setState({
id_evaluation: '1',
});
console.log('2 - ', this.state.id_evaluation)
在第一个console.log中,我的值为1,在第二个中,它保持为空,不更新状态。
this.setState是一个异步函数。
this.setState({
id_evaluation: '1',
}, () => console.log('2 - ', this.state.id_evaluation));
回调函数可以解决您的问题。
setState
异步工作,因此将console.log
作为callback
传递以获取更新状态。
this.setState({ id_evaluation: '1'}, () => console.log('2- ', this.state.id_evaluation));
当用作代码时,console.log('2-',this.state.id_evaluation)
正在打印以前的状态,而不是更新的状态。
这是因为您在状态更新之前调用console.log。试试这个:
this.setState({
id_evaluation: '1',
}, () => {
console.log('2 - ', this.state.id_evaluation);
});
请参阅此线程:
是否可以在setState完成更新后执行函数?
所以我有这个: 只是一个数组的数字例如然而没有给出正确的总数,但?我甚至放了一个超时延迟,看看这是否解决了问题。任何明显的还是我应该发布更多的代码?
我试图在if语句中设置状态,但它不会这样做。结果,我需要从if语句中更新状态,在那个里我可以接收经度和纬度坐标,但它不会保存状态。若我在If语句之外的控制台中回显,我将只读取第一个setState值表单componentWillMount。有什么问题吗?我做错了什么?结构如下:
我试图将“加载”的状态从true更改为false,但当我调用一个函数并在该函数中设置“this.setState({loading:false})”时,加载状态仍然保持true。 在下面的代码中,当按钮按钮函数被调用时,它将“加载”状态设置为真,但当用户成功登录“加载”状态时,应该变为假,这样我的渲染按钮函数将重新渲染,旋转器可以隐藏自己并显示按钮。 为什么LoginSAccess函数中的“加载”
是否可以使用更新对象的属性? 类似于: 我试过: 还有这个: 第一个会导致语法错误,而第二个则什么也不做。有什么想法吗?
问题内容: 是否有可能用更新对象的属性? 就像是: 我努力了: 还有这个: 第一个导致语法错误,第二个则什么都不做。有任何想法吗? 问题答案: 有多种方法可以执行此操作,因为状态更新是异步操作,因此要更新状态对象,我们需要使用带有updater函数。 1-最简单的一个: 首先创建的副本,然后执行以下更改: 除了使用,我们还可以这样写: 2-使用 扩展运算符: 注意: 并且仅创建浅表副本,因此,如果