javascript – 如何在redux中更新特定数组项内的单个值

前端之家收集整理的这篇文章主要介绍了javascript – 如何在redux中更新特定数组项内的单个值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个问题,即重新渲染状态会导致ui问题,并建议只更新我的reducer中的特定值,以减少页面上的重新渲染的数量.

这是我的状态的例子

{
 name: "some name",subtitle: "some subtitle",contents: [
   {title: "some title",text: "some text"},{title: "some other title",text: "some other text"}
 ]
}

我目前正在更新它

case 'SOME_ACTION':
   return { ...state,contents: action.payload }

其中action.payload是包含新值的整个数组.但是现在我实际上只需要更新内容数组中第二个项目的文本,而这样的东西就不行了

case 'SOME_ACTION':
   return { ...state,contents[1].text: action.payload }

其中action.payload现在是我需要更新的文本.

解决方法

你可以使用 React Immutability helpers
import update from 'react-addons-update';

// ...    

case 'SOME_ACTION':
  return update(state,{ 
    contents: { 
      1: {
        text: {$set: action.payload}
      }
    }
  });

虽然我可以想象你可能会在做更像这样的事情?

case 'SOME_ACTION':
  return update(state,{ 
    contents: { 
      [action.id]: {
        text: {$set: action.payload}
      }
    }
  });
原文链接:https://www.f2er.com/js/154366.html

猜你在找的JavaScript相关文章