我可以省略 Reducer 吗?
Can I omit Reducer?
我在项目中使用 Redux 和 Redux Saga。我正在为应用程序创建一个通知系统。因此,如果任何 Sagas 调用成功或失败操作,将显示成功或失败通知。
我已经在 Redux Saga 中放置(调用)了通知功能。
SHOW_NOTIFICATION - action
showNotificationSaga = () => { notify({ message: 'Bla Bla' }) };
我看不出有什么理由要在这里创建减速器。我的意思是,我没有任何状态需要维护通知。所以,我想不为此添加任何减速器。
这样可以吗?还是反模式?
谢谢
更新:
另一种方法是直接从其他传奇中调用 notify()
。
例如:
sagaForLogin(){
...catch(){
notify({});
}
}
有什么推荐吗?
If you don't need the state, then you don't need the reducer
我引用本的话是因为他是对的。
各种传奇使用动作在它们之间进行交流并触发它们自己。所以这些动作不仅具有更新状态的经典含义,而且它们还可以作为 communication/trigger 事件。在纯事件驱动的开发风格(由 Resux-Saga 强制执行的风格)中,动作变成了事件。
如果 saga 不会导致任何状态更改,那么甚至可能不需要 saga 本身。如果您有一些用于 success/failure 操作的指标,例如isFetching
和 didInvalidate
与 Redux website's example 中一样,您可以通过 mapStateToProps
创建道具,让您的组件检测何时以及显示什么通知:
const mapStateToProps = (state) => ({
// passing indicators directly
isFetching: state.myReducer.isFetching,
didInvalidate: state.myReducer.isFetching
// or compose into meaningful props
somethingWrong: !state.myReducer.isFetching && state.myReducer.didInvalidate
})
我在项目中使用 Redux 和 Redux Saga。我正在为应用程序创建一个通知系统。因此,如果任何 Sagas 调用成功或失败操作,将显示成功或失败通知。
我已经在 Redux Saga 中放置(调用)了通知功能。
SHOW_NOTIFICATION - action
showNotificationSaga = () => { notify({ message: 'Bla Bla' }) };
我看不出有什么理由要在这里创建减速器。我的意思是,我没有任何状态需要维护通知。所以,我想不为此添加任何减速器。
这样可以吗?还是反模式?
谢谢
更新:
另一种方法是直接从其他传奇中调用 notify()
。
例如:
sagaForLogin(){
...catch(){
notify({});
}
}
有什么推荐吗?
If you don't need the state, then you don't need the reducer
我引用本的话是因为他是对的。
各种传奇使用动作在它们之间进行交流并触发它们自己。所以这些动作不仅具有更新状态的经典含义,而且它们还可以作为 communication/trigger 事件。在纯事件驱动的开发风格(由 Resux-Saga 强制执行的风格)中,动作变成了事件。
如果 saga 不会导致任何状态更改,那么甚至可能不需要 saga 本身。如果您有一些用于 success/failure 操作的指标,例如isFetching
和 didInvalidate
与 Redux website's example 中一样,您可以通过 mapStateToProps
创建道具,让您的组件检测何时以及显示什么通知:
const mapStateToProps = (state) => ({
// passing indicators directly
isFetching: state.myReducer.isFetching,
didInvalidate: state.myReducer.isFetching
// or compose into meaningful props
somethingWrong: !state.myReducer.isFetching && state.myReducer.didInvalidate
})