React native 在react native中更新redux状态后重新加载屏幕

React native 在react native中更新redux状态后重新加载屏幕,react-native,React Native,在我的应用程序中,在从redux状态更新平面列表的一行之后, 它没有按预期呈现 // like Button Handler case SM_ACTION_LIKE: let updatedPosts = state.posts; updatedPosts.forEach(post => { if (post.shareId === action.payload.postId) { post.likeCount = action.payload.likeCou

在我的应用程序中,在从redux状态更新平面列表的一行之后, 它没有按预期呈现

// like Button Handler
case SM_ACTION_LIKE:
  let updatedPosts = state.posts;

  updatedPosts.forEach(post => {
    if (post.shareId === action.payload.postId) {
      post.likeCount = action.payload.likeCount
    }
  });

  return {
    ...state,
    posts: updatedPosts.slice()
  };
  break;
我的密码是

   // like Button Handler
    case SM_ACTION_LIKE:
      let updatedPosts = state.posts;

      updatedPosts.forEach(post => {
        if (post.shareId === action.payload.postId) {
          post.likeCount = action.payload.likeCount
        }
      });

      return {
        ...state,
        posts: updatedPosts
      };
      break;
在试图找到这个问题的解决方案之后,我使用了下面的代码,它按照预期工作

// like Button Handler
case SM_ACTION_LIKE:
  let updatedPosts = state.posts;

  updatedPosts.forEach(post => {
    if (post.shareId === action.payload.postId) {
      post.likeCount = action.payload.likeCount
    }
  });

  return {
    ...state,
    posts: updatedPosts.slice()
  };
  break;

在updatedPosts末尾使用slice()是解决方案。这是一种很好的做法还是一种更好的处理方法?

之所以这样做是因为
updatedPosts。slice()
返回一个posts的副本,这是redux希望更新状态需要是不可变的

在不使用任何不可变库的情况下执行此操作的通常方法是使用运算符

另一种方法是使用不可变库,如