异步存储错误 交换机中未处理的承诺拒绝



我是本地反应的新手,现在我遇到了问题。 我正在尝试使用异步存储将数据保存到本地存储中,我正在按照本教程进行操作,

它工作正常,但不在我的开关代码中。 这是我的构造函数

constructor(props) {
super(props)         
this.state = {prevBtn: undefined}
this.onPrevValueChange = this.onPrevValueChange.bind(this);
}

然后我在我的 didMount 中得到了这个项目:

componentDidMount() {
this.getQuestionnaire();
AsyncStorage.getItem('prevBtn').then((value) => this.setState({ 'prevBtn': value }));
}

设置更改时的值:

onPrevValueChange = (value) =>  {
AsyncStorage.setItem('prevBtn', value);
this.setState({ prevBtn: value  });
}

和渲染方法:

render(){
const {}
return(
<Switch 
value={prevBtn}
backgroundActive={'red'}
onValueChange={this.onPrevValueChange}  
/> 
);
}

有人可以帮忙吗?

componentDidMountsetState的问题,当您使用单引号为prevBtn设置值时,它的行为就像String而不是state,请按如下方式使用它:

componentDidMount() {
this.getQuestionnaire();
AsyncStorage.getItem('prevBtn').then((value) => this.setState({ prevBtn: value }));
}

render直接使用prevBtn,请将其用作this.state.prevBtn

render(){
const {}
return(
<Switch 
value={this.state.prevBtn}
backgroundActive={'red'}
onValueChange={this.onPrevValueChange}  
/> 
);
}

您需要将组件DidMount更改为:

请注意,AsyncStorage.getItem总是返回一个字符串,但在使用它之前,您必须将其转换为布尔值。 正如另一位评论者指出的那样,你不能在国有财产周围引用。

componentDidMount() {
this.getQuestionnaire();
AsyncStorage.getItem('prevBtn').then((value) => {
value === 'true' 
? this.setState({ prevBtn: true })
: this.setState({ prevBtn: false })
});
}

相关内容

  • 没有找到相关文章

最新更新