不可变的 js UpdateIn 正在存储数字而不是对象
Immutable js UpdateIn is storing number instead of object
我正在尝试更新一个 immutablejs 对象;
//action.vals = {element: "p", type: "text", content: "test", className: "paragraph-topic"}
return state
.updateIn(['contents'], list => list.push(action.vals)) //<<<<<THis is failing
.set('loading', false)
.set('error', false)
break;`
而是存储 10
一个整数。
我真的很困惑,我需要帮助建议。
非常感谢任何帮助!由于缺乏正确的使用文档,我快疯了
使用 ...
做一些这样的事情。
.updateIn(['contents'], list => [...list, action.vals])
我注意到在 LOAD_DATA
reducer 上,您将 contents
设置为数组而不是不可变列表:
case LOAD_DATA:
return state
.set('loading', true)
.set('error', false)
.setIn(['contents'], [])
这会导致很多问题。发生的事情是您在更新中使用了香草 JS push
函数,并且 returns 数组的 length
。所以我假设 contents
有 10 个元素?
您只需更改 LOAD_DATA
reducer 即可:
.setIn(['contents'], fromJS([]))
或
.setIn(['contents'], new List())
如果使用 List()
,也必须显式导入!
我正在尝试更新一个 immutablejs 对象;
//action.vals = {element: "p", type: "text", content: "test", className: "paragraph-topic"}
return state
.updateIn(['contents'], list => list.push(action.vals)) //<<<<<THis is failing
.set('loading', false)
.set('error', false)
break;`
而是存储 10
一个整数。
我真的很困惑,我需要帮助建议。
非常感谢任何帮助!由于缺乏正确的使用文档,我快疯了
使用 ...
做一些这样的事情。
.updateIn(['contents'], list => [...list, action.vals])
我注意到在 LOAD_DATA
reducer 上,您将 contents
设置为数组而不是不可变列表:
case LOAD_DATA:
return state
.set('loading', true)
.set('error', false)
.setIn(['contents'], [])
这会导致很多问题。发生的事情是您在更新中使用了香草 JS push
函数,并且 returns 数组的 length
。所以我假设 contents
有 10 个元素?
您只需更改 LOAD_DATA
reducer 即可:
.setIn(['contents'], fromJS([]))
或
.setIn(['contents'], new List())
如果使用 List()
,也必须显式导入!