Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Immutable.js-将值添加/更新到映射中嵌套的列表中_Javascript_Nested_Immutable.js_Immutablelist - Fatal编程技术网

Javascript Immutable.js-将值添加/更新到映射中嵌套的列表中

Javascript Immutable.js-将值添加/更新到映射中嵌套的列表中,javascript,nested,immutable.js,immutablelist,Javascript,Nested,Immutable.js,Immutablelist,Im使用Immutable.js尝试将对象添加到嵌套在对象中的列表中。我已经能够让我的第一个功能手柄级别开始工作,以设置传递的线索。我的第二个功能handleSaveLeads工作不正常 从目前为止我通过注销所看到的情况来看,被推到不可变列表中的新项被过度写入。因此,当我将其登录到控制台时,您只会看到最后一个推送的项目,而之前的项目已经不存在了。这里有一个指向JS Bin的链接: //初始状态 var state=Immutable.Map; //样品铅 var leads=[{documen

Im使用Immutable.js尝试将对象添加到嵌套在对象中的列表中。我已经能够让我的第一个功能手柄级别开始工作,以设置传递的线索。我的第二个功能handleSaveLeads工作不正常

从目前为止我通过注销所看到的情况来看,被推到不可变列表中的新项被过度写入。因此,当我将其登录到控制台时,您只会看到最后一个推送的项目,而之前的项目已经不存在了。这里有一个指向JS Bin的链接:

//初始状态 var state=Immutable.Map; //样品铅 var leads=[{document_id:l42344, 公司名称:someComp, 提交日期:083815, 地址:香港湾仔第123大道西南11111号, 名字:约翰, 姓:doe }, {文件编号:L1111111, 公司名称:CorpComp, 提交日期:1919年9月9日, 地址:深圳市西南456大街2222号, 名字:简, 姓:doe }]; //将新的潜在客户添加到状态 功能手柄水平导线状态,导线{ var newState=state.set'leads',Immutable.Listleads; 返回console.lognewState.toJS; } 手柄水平状态,导线; //要保存的样本线索 var saveLeads=[{document_id:l1919, 公司名称:someComp2, 提交日期:083815, 地址:香港湾仔第333大道西南33333号, 名字:达拉斯, 姓:托马斯 }]; //将线索添加到savedLeads 功能手柄SaveLead状态,lead{ if!state.savedLeads{ var newState=state.set'savedLeads',Immutable.Listlead; 返回console.lognewState.toJS; }否则{ var newState2=state.get'savedLeads'.pushlead; 返回console.lognewState2.toJS; } } //样本导致节省2 var saveLeads2=[{document_id:L1616, 公司名称:someComp3, 提交日期:083815, 地址:新罕布什尔州西南555大街4444号, 名字:crystal, 姓氏:曼托斯 }]; handleSaveLeadstate、saveLeads; //设置新的初始状态 var state2=Immutable.fromJS{leads:leads,savedLeads:saveLeads};
handleSaveLeadstate2,saveLeads2 这里发生了几件事。 首先,您永远不会从处理程序返回新的“修改”状态

其次,state.savedLeads始终是未定义的。使用state。改为获取“savedLeads”

第三,当您使用state.get'savedLeads'并推送要将其设置为状态的新项目时,将从该状态返回新状态

在这里,试试这个:

//Initial state
var state = Immutable.Map();

//sample lead
var leads = [{document_id: "L4234234234234",
              company_name: "someComp",
              date_filed:"083815",
              address:"11111 sw 123 ave",
              first_name: "john",
              last_name: "doe"
             },
             {document_id: "L11111111",
              company_name: "CorpComp",
              date_filed:"091919", 
              address:"22222 sw 456 Ave",
              first_name: "jane",
              last_name: "doe"
             }];

//Adds the new leads to the state
function handleRecieveLeads (state, leads) {
    return state.set('leads', Immutable.List(leads));
}

var newState = handleRecieveLeads(state, leads);
console.log(newState.toJS())

//sample lead to save
var saveLeads = [{document_id: "L1919191919",
                  company_name: "someComp2",
                  date_filed:"083815",
                  address:"33333 SW 333rd Ave",
                  first_name: "dallas",
                  last_name: "thomas"
                 }];

//add leads to the savedLeads
function handleSaveLead (state, lead) {
    if(!state.get('savedLeads')) {
       return state.set('savedLeads', Immutable.List(lead));
    } else {
       var savedLeads = state.get('savedLeads');
       return state.set('savedLeads', savedLeads.push(lead));
    }
}
//sample lead to save 2
var saveLeads2 = [{document_id: "L16161616",
                   company_name: "someComp3",
                   date_filed:"083815",
                   address:"444444 sw 555 Ave",
                   first_name: "crystal",
                   last_name: "mentos"
                  }];

var newState2 = handleSaveLead(newState, saveLeads);
console.log(newState2.toJS())

var newState3 = handleSaveLead(newState2, saveLeads2);
console.log(newState3.toJS())

我刚刚更新了链接