mobx遇到的坑

146 阅读1分钟

comuted

1.computed依赖属性更新后,computed没重新触发。 具体代码如下:

/**
 * 数据联动
 */
const handleChange = useCallback((value: any) => {
  ...变更this.fieldMap
}, [config, readWriteKey])
//计算属性
const checkData = computed(() => {
    const currentData = store?.getColumnStatus(readWriteKey);
    return {
        value: currentData
    };
}).get()
//依赖项
@action
getColumnStatus = (editKey: string) => {
    let status = false;
    this.fieldMap.forEach((item: any) => {
        status = item?.[editKey];
    });
    return status;
};

解决方案: 去除依赖项的@action 问题分析:在handleChange里更新fieldMap后,设置了action的getColumnStatus因为依赖关系就通知了数据变化了,到computed又依赖getColumnStatus,这时候依赖项已经走过了,所以不会通知computed(仅个人理解猜测,欢迎指正)。

observable使用方法:后面把所有方法打印测试下 注意

observable方法转mobx是递归操作,层级很深时会影响性能问题,所以转mobx对象时可以选择一层还是深层