首页 > 解决方案 > 您可以订阅 Zusand 的某个州的某些部分吗?

问题描述

目前,当更改组件中的状态时,我将状态订阅到一个商店,该商店在我调用的函数完成时更新。我这样做:

useAirQualityStore.getState().updateAirQuality();

...

this.state = useAirQualityStore.subscribe(state => this.setState(state));

但是,当我在需要使用多个商店的屏幕上工作时,我有更多的参数并且无法设置整个状态。我可以订阅我的状态的某些参数来监听商店的变化吗?

我对此的想法会以某种方式传递到以前的状态,但似乎有点混乱:

useWeatherStore.subscribe(console.log, state => this.setState(prevState => {
      return {
        ...prevState,
        forecast: state.dailyForecast,
        weatherIsLoading: state.forecast.isLoading
      }
    }));

有一个更好的方法吗?

标签: reactjsstate-managementzustand

解决方案


在 Zusand 中,您可以将组件状态订阅到多个商店。值和参数只是附加到相同的状态。例如,

this.state = useWeatherStore.subscribe(state => this.setState(state));
this.state = useAirQualityStore.subscribe(state => this.setState(state));

这会将“useWeatherStore”和“useAirQualityStore”中的数据附加到“this.state”。它似乎会相应更新。


推荐阅读