我在React组件中使用 indexOf
来根据对象是否在mobx可观察数组中来设置按钮的样式 .
该按钮用于收藏 . 它将该特定列表项的对象推送到名为“favorites”的商店中的可观察数组中 . 收藏夹是一个可观察的对象数组 .
这是我的按钮中的ES6模板文字:
className={`btn-group ${((this.props.store.favorites.indexOf(this.props.data) > -1)) ? 'success' : 'info'}`}
基本上,它检查对象是否在数组中,className将为 success
,如果为_1111717_ .
当收藏夹数组处于本地状态时,这非常正常 . 但是我发现收藏夹数组中的对象在可观察数组中看起来有所不同 . 我得到的是可观察数组收藏夹与本地数组收藏夹不同 .
但是,如何测试对象是否在可观察的对象数组中呢?我尝试了 slice()
和 peek()
并使用了findIndex但没有骰子 .
2 回答
Michel(mobx创建者)通过Gitter channel给了我需要的提示 .
我实际上需要一个浅的可观察数组,而不是一个深度可观察的数组 . 我不需要数组中对象的每个属性都是可观察的(因此所有的集合/得到我之前看到的对象属性),只是添加或删除了一个对象 .
所以我改变了它
至
最终,虽然@dagatsoin的答案是正确的,如果你需要使用一个深度可观察的数组 .
关于doc:
isObservableArray
所以要知道
data
是否在一个可观察的favorites
数组中:这是一个带有函数助手的POC:https://jsbin.com/botijom/edit?js,console