我可以省略 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 操作的指标,例如isFetchingdidInvalidateRedux 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
})