Javascript 如何在嵌套的Immutable.js映射和列表中执行推送操作。?

Javascript 如何在嵌套的Immutable.js映射和列表中执行推送操作。?,javascript,reactjs,react-native,redux,immutable.js,Javascript,Reactjs,React Native,Redux,Immutable.js,我正在使用Immutable.js附带的react native的pepperoni应用程序包。我以前从未使用过Immutable.js,我发现执行一项简单的任务非常困难 我想在消息列表中推送一条消息,它在地图中 someReducer.js import {Map,List} from 'immutable'; const initialState = Map({isReady : false , messages : List([])}); // reducer switch case

我正在使用Immutable.js附带的react native的pepperoni应用程序包。我以前从未使用过Immutable.js,我发现执行一项简单的任务非常困难

我想在消息列表中推送一条消息,它在地图中

someReducer.js

import {Map,List} from 'immutable';

const initialState = Map({isReady : false , messages : List([])});

// reducer switch case
return state.update('messages',messages=>messages.concat(action.Message.payloadString);
// not working
//I also tried
return state.get('messages').push(Immutable.Map({text:'some text',...}))
如何使用Immutable.js编写此ES6代码

var newState = state; // copy state 
newState.messages.push({text:'hello world',...otherInfo}); // make changes
return object.assign({},newState); // return a new object.
可能重复的
describe('how-to-perform-push-operation-in-a-nested-immutable-js-map-and-lists', () => {
    const initialState = Immutable.Map({
        isReady: false, 
        messages: Immutable.List([]),
    });

    it('should `push` using List.update', () => {
        const payload = 'some text';
        const updatedState = initialState.update('messages',
            (list) => (list.push(payload))
        );
        // passes:
        expect(updatedState.getIn(['messages', 0])).to.equal(payload);
    });

    it('should `concat` using List.update', () => {
        const multiMessagePayload = ['alpha', 'beta'];
        const reUpdatedState = initialState.update('messages',
            (list) => (list.concat(multiMessagePayload))
        );
        // passes:
        expect(reUpdatedState.get('messages').size).to.equal(2);
    });
});