如何传递对象数组以使用Effect依赖数组?

col17t5w  于 2022-10-15  发布在  React
关注(0)|答案(1)|浏览(113)

我在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-effectuseDeepCompareEffect

useDeepCompareEffect(() => {
   ...
  }, [engineGroupStore.tabArray]);

当特定事件发生时,数组对象使用[]初始化,但不执行呈现。

const change = async () => {
   EngineGroupStore.setTabArray([]);
 };

我确认存储在存储中的对象数组已初始化(长度为0)。但是,不会调用useDeepCompareEffect函数。我怎么才能修好它?

rekjcdws

rekjcdws1#

听起来像是Engineering GroupStore.tabArray不变,我不确定为什么需要使用useDeepCompareEffect,只需分解tabArray并将其作为参数?
尽可能避免上课--尽可能使用ES6箭头。
SetTabArray没有使用useState挂钩,因此状态没有变化,因此不会重新呈现。

相关问题