我正在构建一个需要在某些情况下显示确认对话框的应用程序.
假设我想删除一些东西,然后我会调度一个动作,deleteSomething(id)因此一些reducer会捕获该事件并填充对话框减速器以显示它.
当这个对话提交时,我怀疑了.
编辑:
使它更清楚:
deleteThingA(id) => show dialog with Questions => deleteThingARemotely(id)
createThingB(id) => Show dialog with Questions => createThingBRemotely(id)
Run Code Online (Sandbox Code Playgroud)
所以我正在尝试重用对话框组件.显示/隐藏对话框不是问题,因为这可以在reducer中轻松完成.我想要指定的是如何根据左侧开始流动的动作从右侧调度动作.
我正在创建一个使用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>
)
}
}
Run Code Online (Sandbox Code Playgroud)
问题在于,尽管subscriber在调度的每个操作上调用,但订阅者无法知道调度的最后一个操作是什么.所以没有办法知道什么时候打电话onSubmit.
subscriber …