如何从存储本身获取在存储上调度的最后一个操作类型
How to get last action-type dispatched on the store from the store itself?
我正在创建一个组件,该组件使用Redux架构处理状态(是的,根据定义,这可能很糟糕,因为组件应该将状态委托给应用程序,但无论如何)。
此组件接受不同的道具。当我必须处理回调时,我的问题就来了。让我们举一个实际的例子来更好地描述这一点。
假设我们需要像<App onSubmit={() => {}} />
这样的组件。
当组件得到挂载时,我们可以创建一个存储,这样所有内部组件都可以调度操作/订阅更改等。
尝试可能是执行一个名为submit()
的操作。通过这种方式,商店将知道要应用的更改,因此任何订阅者都会知道,并且有人会在提交回调时调用此。
所以代码看起来像:
class App extends Component {
constructor (props) {
super(props)
this.subscriber = this.subscriber.bind(this)
}
componentWillMount() {
this.store = createStore()
this.store.subscribe(this.subscriber)
}
subscriber (action) {
if (action.type === 'submit')
this.props.onSubmit()
}
render () {
return (
<Provider store={this.store}>
<FooComponent />
</Provider>
)
}
}
问题是,尽管在调度的每个操作上都调用subscriber
,但订阅者无法知道调度的最后一个操作是什么。因此,无法知道何时调用onSubmit
。
- 我们如何使用
subscriber
来了解商店的变化 - 我应该停止在这里尝试冗余架构吗
这是Redux中的反模式。
没有所谓的"最后一次操作",因为Redux保留在发生多个嵌套调度时只通知您一次的权利。
相反,您应该将局部副作用与动作一起执行。Redux Thunk是一种流行的方法。如果你需要更多的脱钩,你可能会喜欢Redux Saga。
相关文章:
- 将作用域存储在JSON中
- 使用javascript存储变量的最安全方式
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 如何有效地将游戏数据存储在URL查询字符串中
- Ember.js-接口状态应该存储在哪里
- 如何解雇“;铁局部存储负载”;事件
- 本地存储中的字符串到字节数组转换
- 从jQuery调用存储在Variable中的函数
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- 通过另一个php应用程序将我的项目推送到Github存储库中
- 将数据存储在javascript数组中以供进一步使用
- 在页面卸载时写入HTML5 FileSystem API存储
- 调度没有'无法立即更新组件
- 在dhtmlx调度程序中多次触发OnEventSave
- 加载存储在IndexedDB中的HTML页面
- 在字符串中查找所有图像 src URL 并存储在数组中
- reactJs redux:如何对用户事件调度操作并将操作与化简器和存储链接
- 我该如何记录对Redux存储的每个调度调用
- 如何从存储本身获取在存储上调度的最后一个操作类型