当项目值在本地变化时更新状态

时间:2019-03-04 16:00:10

标签: reactjs react-native

我正在做一个使用户喜欢或不喜欢帖子的应用程序。默认情况下,当帖子加载时,有效负载中有一个称为hasUserLike的部分设置为false。 因此,创建了一个函数,当单击按钮时,它应将hasUserLike更新为true,这样可以隐藏和取消隐藏屏幕上的某些元素并显示其他元素。

功能

likePostComment = (item) => {
    item.hasUserLike = true;
    alert(item.hasUserLike)
}

查看

{
item.hasUserLike === false ? 
  <Icon
  onPress={()=>onLikePostComment(item)}
  name='md-thumbs-up'
  type='ionicon'
  color='#778899'
  />
  : null
}

{
item.hasUserLike === true ? 
  <Icon
  onPress={()=>onDisLikePostComment(item)}
  name='md-thumbs-up'
  type='ionicon'
  color='#36c'
  />
  : null
}

当值更改为true时,即使警报弹出为true,表示要显示的组件也不会显示

1 个答案:

答案 0 :(得分:0)

当您仅更改对象item时,它不会导致重新渲染,因此视图不会更新。

使其重新呈现的一种方法是在您喜欢/不喜欢帖子时更改状态中的值。

如果在喜欢/不喜欢该帖子时您没有任何状态可以更改,则可以执行以下操作来强制重新渲染。

likePostComment = (item) => {
    item.hasUserLike = true;
    alert(item.hasUserLike)
    this.setState({render: Math.random()}); 
}

尽管您可能最好管理状态中喜欢/不喜欢的职位。