Javascript Immutable.js deleteIn不工作
我一直在试图解决这个问题,但可能有一些Immutable.js我没有理解。我希望有人能帮助我理解 我有一个这样的测试:Javascript Immutable.js deleteIn不工作,javascript,reactjs,redux,immutable.js,Javascript,Reactjs,Redux,Immutable.js,我一直在试图解决这个问题,但可能有一些Immutable.js我没有理解。我希望有人能帮助我理解 我有一个这样的测试: import {List, Map} from 'immutable'; import {expect} from 'chai'; import {setInitial, addAtListOfMembers, removeAtListOfMembers } from '../src/core'; describ
import {List, Map} from 'immutable';
import {expect} from 'chai';
import {setInitial,
addAtListOfMembers,
removeAtListOfMembers
} from '../src/core';
describe('removeAtListOfMembers', () => {
it('remove a member to the list of members', () => {
const state = Map({
removing: 3,
infos : Map(),
members: Map({
1:Map({
userName:'René',
date:'12/02/2016'
}),
2:Map({
userName:'Jean',
date:'10/03/2016'
}),
3:Map({
userName:'Elene',
date:'05/01/2016'
})
})
});
const nextState = removeAtListOfMembers(state);
expect(nextState).to.equal(Map({
infos : Map(),
members: Map({
1:Map({
userName:'René',
date:'12/02/2016'
}),
2:Map({
userName:'Jean',
date:'10/03/2016'
})
})
}));
});
});
});
…巫婆测试这个功能:
export function removeAtListOfMembers(state) {
const members = state.get('members');
const removing = state.get('removing');
return state
.deleteIn(['members'], removing)
.remove('removing');
}
但它不起作用。我什么都试过了。。。。更改行以使其工作,但我没有删除第3项
怎么了?有人来帮我吗?这应该可以:
export function removeAtListOfMembers(state) {
const members = state.get('members');
const removing = state.get('removing');
return state
.deleteIn(['members', String(removing) ])
.remove('removing');
}
您的代码有两个问题:
接受一个deleteIn
参数,在您的例子中是keyPath
。忽略第二个参数(['members']
),因此结果是删除整个删除
映射;相反,成员
应该成为密钥路径的一部分删除
是一个删除
,但是因为您正在从JS对象创建一个数字
,所以它的键将是映射
(这也在中提到): 请记住,当使用JS对象构建不可变映射时,JavaScript对象属性总是字符串字符串
删除
传递给deleteIn
时,需要将其转换为字符串