我在mobx商店中存储了一个对象数组。
// type.ts
export interface TabsType {
id: string;
text: string;
}
// store.ts
class EngineGroupStore {
tabArray: TabsType[] = [];
constructor() {
makeObservable(this, {
tabArray: observable,
setTabArray: action,
});
}
setTabArray(tabs: TabsType[]) {
this.tabArray = tabs;
}
}
export default new EngineGroupStore();
我将TabsArray
传递给了useEffect
的依赖数组。因为useEffect不允许深度比较数组,所以我使用了use-deep-compare-effect
的useDeepCompareEffect
。
useDeepCompareEffect(() => {
...
}, [engineGroupStore.tabArray]);
当特定事件发生时,数组对象使用[]初始化,但不执行呈现。
const change = async () => {
EngineGroupStore.setTabArray([]);
};
我确认存储在存储中的对象数组已初始化(长度为0)。但是,不会调用useDeepCompareEffect
函数。我怎么才能修好它?
1条答案
按热度按时间rekjcdws1#
听起来像是Engineering GroupStore.tabArray不变,我不确定为什么需要使用useDeepCompareEffect,只需分解tabArray并将其作为参数?
尽可能避免上课--尽可能使用ES6箭头。
SetTabArray没有使用useState挂钩,因此状态没有变化,因此不会重新呈现。