这个问题在这里已有答案:
我试图从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);
}
2 回答
setState
动作是异步的 .你应该使用
setState
回调函数:setState
是异步的:使用
setState
的回调来确定更改