React Native:尝试根据AsyncStorage中的数据更新组件

时间:2016-01-03 16:47:44

标签: react-native react-jsx

我有一个从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。

你知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

你能检查一下是否执行了setState,我认为promise会改变这个对象的值,因为它在另一个范围内,如果是这样,你可以将引用“this”放在另一个变量中

    var _this = this;
    db.get('post_'+this.props.id).then((result) => {
        console.log(result);
        _this.setState({
            favPost: result.isFav
        })
    });