San*_*som 0 javascript setstate reactjs
我正在尝试从 if 语句中设置状态,但它不会这样做。结果我需要从 if 语句中更新状态,在那里我可以接收经度和纬度坐标,但它不会保存状态。如果我在 if 语句之外的控制台中回显,我将只读取第一个 setState 值表单 componentWillMount。那里有什么问题?我在这里做错了什么?所以这里是结构:
componentWillMount() {
this.setState({
location: {
name: 'Riga'
}
});
}
componentDidMount() {
if (!!navigator.geolocation) {
navigator.geolocation.getCurrentPosition((position) => {
this.setState({
location: {
name: 'Sigulda'
}
});
});
} else {
alert('ERROR on GEOLOCATION');
}
console.log(this.state.location);
}
Run Code Online (Sandbox Code Playgroud)
setState 动作是异步的。
setState() 不会立即改变 this.state 而是创建一个挂起的状态转换。调用此方法后访问 this.state 可能会返回现有值。无法保证对 setState 调用的同步操作,并且可能会批量调用以提高性能。
您应该使用setState回调函数:
this.setState({
location: {
name: 'Sigulda'
}
}, () => console.log(this.state.location));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1487 次 |
| 最近记录: |