将数组与可观察的MobX可观察数组进行比较
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将数组与可观察的MobX可观察数组进行比较相关的知识,希望对你有一定的参考价值。
我在stores / index.js中有一个可观察的数组,如下所示:
class Store
@observable order = [];
fetchData = flow(function*()
try
const myData = yield backendService.retrieveData();
if (myData.length > 0)
this.order = myData.map(element =>
return element.id;
);
catch (error) // error handling
);
...
我在一个组件中使用这个可观察数组来将它与另一个数组进行比较,如果它们不相同,我将通过一个动作更新可观察数组。
export default
@inject('store')
@observer
class myComponent extends React.Component
...
_closeModal()
const newOrder = this.state.data.map(element =>
return element.id;
);
if (toJS(store.order) !== newOrder)
store.updateOrder(newOrder);
然而,两个数组的比较结果是错误的,即使我没有做任何更改,toJS(store.order) !== newOrder
仍然返回true。我不知道我做错了什么但是当我控制日志记录这两个数组时,它们返回完全相同的内容。
答案
在javascript中,当两个数组都引用相同的数组时,两个数组严格相等。所以[] === []
返回false!因为他们是不同的阵列。
您可以通过以下方式更改代码:
if (JSON.stringify(toJS(store.order)) !== JSON.stringify(newOrder))
以上是关于将数组与可观察的MobX可观察数组进行比较的主要内容,如果未能解决你的问题,请参考以下文章