Typescript 更新ImmutableJS记录的多个字段的推荐方法是什么?
我有ImmutableJS记录,我想更新多个字段,推荐的方法是什么 我尝试过变异,但由于某种原因,我得到的副本是空的,我无法对其进行变异:Typescript 更新ImmutableJS记录的多个字段的推荐方法是什么?,typescript,immutability,record,immutable.js,Typescript,Immutability,Record,Immutable.js,我有ImmutableJS记录,我想更新多个字段,推荐的方法是什么 我尝试过变异,但由于某种原因,我得到的副本是空的,我无法对其进行变异: const UserRecord = Record({ firstName: null, lastName: null, address: { city: null, zipCode: null } }); export function createUserRecord(data) { return new Use
const UserRecord = Record({
firstName: null,
lastName: null,
address: {
city: null,
zipCode: null
}
});
export function createUserRecord(data) {
return new UserRecord(fromJS(data));
}
let u = createUserRecord({
firstName: 'John',
lastName: 'Don',
address: {
city: 'New York',
zipCode: 1111
}
});
let newU = u.withMutations((uCopy) => {
// uCopy is empty (with default values)
uCopy.set('firstName', 'New FirstName');
uCopy.set('lastName', 'New LastName');
// uCopy is still empty (not mutated)
});
console.log(u.toJS()); // {firstName: "John", lastName: "Don", address: {city: null, zipCode: null}}
console.log(newU.toJS()); // {firstName: null, lastName: null, address: {city: null, zipCode: null}}
谢谢大家! 带有突变的方法
不会改变对象u
。它返回一个变异的对象,所以您需要像这样调用它
let newU = u.withMutations((uCopy) => {
// uCopy is empty (with default values)
uCopy.set('firstName', 'New FirstName');
uCopy.set('lastName', 'New LastName');
// uCopy is still empty (not mutated)
});
请看来自的文档中的这个示例
我已编辑了问题,请再次检查。谢谢你的回答!我将您的代码复制到JSFIDLE。结果是-Object{firstName:“John”,lastName:“Don”,address:Object}Object{firstName:“newfirstname”,lastName:“New lastName”,address:Object}
。对象u
保持原样,您得到的新对象,即newU
具有firstName和lastName的新值,街道仍然是纽约1111
var list1 = Immutable.List.of(1,2,3);
var list2 = list1.withMutations(function (list) {
list.push(4).push(5).push(6);
});
assert(list1.size === 3);
assert(list2.size === 6);