我有一个MobX商店,它存储我的应用程序的状态树对象(配置):
import {makeAutoObservable} from "mobx";
import {XMLBuilder, XMLParser, XMLValidator} from "fast-xml-parser";
// My config state
class Configuration_Store {
    configurationReadOnly = {};   //Read-only configuration, not write-only
    configurationWriteOnly = {};  //Write only configuration
    isConfigurationsEqual = true; // Configuration Identity Check
    constructor() {
        makeAutoObservable(this);
    }
    // Edit configuration for reading
    setConfigurationReadOnly(configuration) {
        this.configurationReadOnly = configuration;
    }
    // Change configuration for recording
    setConfigurationWriteOnly(configuration) {
        this.configurationWriteOnly = configuration;
    }
    // Set check flag for identity of configurations
    setIsConfigurationsEqual(isConfigurationsEqual) {
        this.isConfigurationsEqual = isConfigurationsEqual;
    }
}
export default Configuration_Store;
我的状态是在应用程序初始化之后,在加载xml文件及其进一步解析之后设置的。事实是,当我更改部分配置(在树对象内)并通过将configurationReadOnly等同于它来重置configurationWriteOnly值时,将不再跟踪我对configurationWriteOnly的进一步更改。停止更改isConfigurationEqual。
My useEffect跟踪了configurationWriteOnly更改时的两个对象
// Monitor the configuration store for changes
    useEffect(() => {
        autorun(() => {
            //configurationStore.isConfigurationsEqual = (JSON.stringify(configurationStore.configurationWriteOnly) === JSON.stringify(configurationStore.configurationReadOnly))
            stories.CONFIGURATION_STORE.isConfigurationsEqual = _.isEqual(stories.CONFIGURATION_STORE.configurationWriteOnly, stories.CONFIGURATION_STORE.configurationReadOnly);
            console.log(stories.CONFIGURATION_STORE.isConfigurationsEqual);
        });
    }, [stories.CONFIGURATION_STORE.configurationWriteOnly]);
我尝试更改可变对象的重置函数,获取初始值来自不可变对象
// Change configuration for recording
    setConfigurationWriteOnly(configuration) {
        this.configurationWriteOnly = Object.assign({}, this.configurationWriteOnly, configuration);
    }