繁体   English   中英

如何为不可变列表的不可变映射添加新值?

[英]how to add new value to a immutable map of a immutable list?

下面是我的代码

 // messageList is a Immutable List
 const newMessage: any = messageList.map((msg: any) => {
            msg.set('name', 'bbb');
        });

但是我得到了

msg.set is not a function

在控制台中。

有什么问题吗?

一种方法是遵循以下步骤:

来自文档:使用set()将新的键/值对添加到Map

const updatedMap = oldMap.set(key, value)

const avengersMap = Immutable.Map({
  ironMan: 'Tony Stark',
  captainAmerica: 'Steve Rogers'
});

const moreAvengers = avengersMap.set('blackWidow', 'Natasha Romanov');

打字稿也是如此。

(参考例)

一些注意事项:正如您可能知道的那样,您不能修改不可变列表,因此在其上的.map不会给您更新列表中元素的可能性。 您必须创建一个修改了该元素的新列表。

在列表中更新的示例(从React Reducer):

function fn(state) { 
     targets = state.get('targets');
     targets = targets.push(action.data);
     return state
          .set('targets', targets)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM