我有一个从AsyncStorage检索数据的应用程序,其值为true / false。
db.get('post_'+this.props.id).then((result))
返回:
{isFav: true}
这是我的代码:
getInitialState: function() {
return {
favPost: false,
}
},
componentDidMount: function() {
db.get('post_'+this.props.id).then((result) => {
console.log(result);
this.setState({
favPost: result.isFav
})
});
},
我的渲染组件:
<ActionButton.Item
buttonColor='#3498db'
title={
(this.state.favPost === true) ? 'Remove from favourites' : 'Add to favourites'
}
onPress={() => {db.update('post_'+this.props.id,{isFav: true})}}>
<Icon name='android-star-outline' style={styles.actionButtonIcon} />
</ActionButton.Item>
但是,我获得了标题:&#34;添加到收藏夹&#34;所有的时间,即使状态是真的。
即使尝试console.log(this.state.favPost)
也会返回true。
你知道如何解决这个问题吗?
答案 0 :(得分:0)
你能检查一下是否执行了setState,我认为promise会改变这个对象的值,因为它在另一个范围内,如果是这样,你可以将引用“this”放在另一个变量中
var _this = this;
db.get('post_'+this.props.id).then((result) => {
console.log(result);
_this.setState({
favPost: result.isFav
})
});