Reactjs 不可变js映射获取深度映射对象
我在redux状态下有一个来自连接的react路由器的不可变映射Reactjs 不可变js映射获取深度映射对象,reactjs,redux,react-router,immutable.js,Reactjs,Redux,React Router,Immutable.js,我在redux状态下有一个来自连接的react路由器的不可变映射 router: { location: { pathname: '/test', search: '', hash: '', state: { tokenIds: { size: 2, _map: { size: 2, _root: { owne
router: {
location: {
pathname: '/test',
search: '',
hash: '',
state: {
tokenIds: {
size: 2,
_map: {
size: 2,
_root: {
ownerID: {},
entries: [
[
'70c48738',
true
],
[
'1a8a6c24',
true
]
]
},
__altered: false
}
}
},
key: 'rkh3ve'
},
action: 'POP'
}
我想提取tokenIds数组。我期待着像这样的事情
[70c48738,1a8a6c24]
我尝试了state.getIn(['router','location','state','tokenid')
但得到的结果是
Map {size: 3, _root: ArrayMapNode, __ownerID: undefined, __hash: undefined, __altered: false}
这就是ImmutableJS的工作原理。通过调用
state.getIn(['router','location','state','tokenIds')
您正在访问ImmutableJSMap
实例,它不仅仅是一个JSMap
或JS对象。您仍然需要对其进行处理以获得所需的内容。请查看如何访问实际数据
例如,为了实现您的期望,您可以执行:
state.getIn(['router','location','state','tokenIds')).keySeq().toJS()
-这将返回Map
键的常规JS数组。或者不返回toJS()
获取ImmutableJS数组
实例。这就是ImmutableJS的工作原理。通过调用state.getIn(['router','location','state','tokenIds'))
您正在访问ImmutableJSMap
实例,它不仅仅是一个JSMap
或JS对象。您仍然需要对其进行处理以获得所需的内容。请查看如何访问实际数据
例如,为了实现您的期望,您可以执行以下操作:state.getIn(['router','location','state','tokenIds']).keySeq().toJS()
-这将返回Map
键的常规JS数组。或者不使用toJS()
来获得不可变的JSarray
实例