【发布时间】:2016-04-11 14:04:21
【问题描述】:
我有一个使用从服务器接收的 JSON 创建的不可变人员列表。我现在通过发送 AJAX 请求来更新其中一个人。来自服务器的响应返回更新的人员。如何使用更新的人员更新不可变列表。我在下面的尝试只是用索引替换列表元素,这会产生不正确的结果。我希望它替换为人员 ID。
var Immutable = require('immutable');
// Get me all my people
var peopleResponse = [
{ username: 'jsmith', title: 'Manager', dept: 'Engineering', salary: 100000 },
{ username: 'lwhite', title: 'Manager', dept: 'Sales', salary: 90000 }
];
// Convert to immutable structures
var people = Immutable.fromJS(peopleResponse);
console.log(people);
// Change lwhite's salary to 100,000
var updateResponse =
{ username: 'lwhite', title: 'Manager', dept: 'Sales', salary: 100000 }
var updatedPeople = [ Immutable.fromJS(updateResponse) ];
people = people.merge(updatedPeople);
console.log(people);
输出:
List [ Map { "username": "jsmith", "title": "Manager", "dept": "Engineering", "salary": 100000 }, Map { "username": "lwhite", "title": "Manager", "dept": "Sales", "salary": 90000 } ]
List [ Map { "username": "lwhite", "title": "Manager", "dept": "Sales", "salary": 100000 }, Map { "username": "lwhite", "title": "Manager", "dept": "Sales", "salary": 90000 } ]
注意更新后的列表有两个lwhites!
【问题讨论】:
-
如何使用更新的人员更新不可变列表。抱歉,您如何更新不可变列表?
-
澄清一下,我不是字面意思。我的意思是获取一个包含更新人员的新列表。