我想使用get('..')
和filter
过滤州内的步骤键,但我无法做到。< / p>
我有这个功能:
function visibleSteps(state) {
return state.get('steps').filter((step) => {
return step.display
})
}
使用此示例进行测试时:
describe('visibleSteps', () => {
it('should show the steps with display true and their title', () => {
const state = Map({
steps: {
0: {
display: false
},
1: {
display: true,
title: "A title"
},
2: {
display: true,
},
3: {
display: false,
}
}
})
expect(visibleSteps(state).size).to.equal(2)
})
})
我收到此错误:
TypeError: state.get(...).filter is not a function
男人怎么做到这一点?
答案 0 :(得分:2)
您收到此错误,因为steps
的值是普通对象。对象没有.filter
方法。如果您希望该值为Map
,则可以明确创建它:
const state = Map({
steps: Map({
// ...
})
});
同样适用于大多数内部物体。如果希望嵌套的JS对象/数组被深度转换为不可变Map
和List
,则可以使用immutable.fromJS
。