在做这章节的时候遇到一个小问题 虽然不影响使用 但是感觉很别扭 就是比如说初始化项目的时候
假如第一个item是收藏状态的 当我再点这个item的收藏按钮的应该是取消收藏 把取消收藏的状态存到数据库里
然后收藏按钮变成未收藏的按钮
这个都没问题 问题就出现在当我下拉刷新的时候那个按钮又变成了收藏状态的按钮 一会儿又变成了未收藏的按钮
如果原来是未收藏的按钮 当我点击之后变成了已收藏的按钮,但是下拉刷新的时候按钮先变成未收藏的 然后又变成了已收藏的按钮 反正就是最后按钮的状态是对的 但是总是要闪一下
我想了很久 感觉问题就是出现在获取本地keys这段代码上
_getFavoritekeys() {
favoriteDao.getFavoritekeys().then( keys => {
if (keys) {
this.updataState({favoriteKeys: keys});
}
this.flushFavoriteState();
}).catch( error => {
this.flushFavoriteState();
})
}
开始的时候item是收藏状态的 当点击之后取消收藏 按钮变成了未收藏的按钮 然后把未收藏状态存到数据库 这个时候下拉刷新重新获取数据 执行上面的代码 也就是先获取本地存的keys获取到之后改变state,state一变就重新render这个时候重新render那个projectModel并没有变化 所以this.props.projectModel.isFavorite依然上次保存的收藏状态 然后this.flushFavoriteState();再去处理数据源重新改变state又去执行render这时候按钮状态又变回未收藏的了
唉 不知道我说码了这么多字 老师能不能看明白 这个问题能不能解决呢 还是就是可不可以在react-native里用redux解决收藏的问题呢