reactjs - 您可以订阅 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
}
}));
有一个更好的方法吗?
解决方案
在 Zusand 中,您可以将组件状态订阅到多个商店。值和参数只是附加到相同的状态。例如,
this.state = useWeatherStore.subscribe(state => this.setState(state));
this.state = useAirQualityStore.subscribe(state => this.setState(state));
这会将“useWeatherStore”和“useAirQualityStore”中的数据附加到“this.state”。它似乎会相应更新。
推荐阅读
- caliper - 为什么即使在仅使用一个客户端后,发送速率仍低于 config.yaml(hyperledger caliper)中配置的速率?
- php - 从插件文件夹内的外部 PHP 定位/验证 WordPress 根目录路径
- aws-sdk - Linux 上的 AWS .NET 开发工具包
- python - 使用 ffmpeg 从图像列表创建视频
- elasticsearch - Elasticsearch 按白名单过滤
- node.js - 是否有可能通过新的 HTTP 请求杀死 Node.js 中的子进程
- google-chrome - 将离线模式添加到 Flutter Web App - Service Workers/Pwas
- r - 我如何处理'to'必须是长度为1的错误?
- javascript - 我对带有逗号小数分隔符的数字有疑问
- typescript - 打字稿:在将可选类型与所需类型合并时创建联合而不是交集