将 redux 状态传递给调度程序

Posted

技术标签:

【中文标题】将 redux 状态传递给调度程序【英文标题】:Passing redux state to dispatcher 【发布时间】:2019-08-16 16:11:44 【问题描述】:

我目前正在编写一个 React 项目(使用 redux 和 recompose)并尝试将我的 redux 状态传递给我的连接内的调度。

我想避免编写我的连接代码两次,但必须这样做才能使currentLocaleCode 出现在状态中,以便调度可以从我的本地状态中获取它。

看起来是这样的:

export default compose(
  connect(
    (
      
        locales:  currentLocaleCode 
      
    ) => ( currentLocaleCode )
  ),
  connect(null, (dispatch) => (
    fetchPage: () =>
      dispatch(pagesActions.fetchPage(currentLocaleCode))
  )),
...

我想立即使用 currentLocaleCode 并实现以下目标:

export default compose(
  connect(
    ( locales:  currentLocaleCode  ) => ( currentLocaleCode ),
      (dispatch,  currentLocaleCode ) => (
        fetchPage: () =>
          dispatch(pagesActions.fetchPage(currentLocaleCode))
      ),
...

这可能吗?

【问题讨论】:

【参考方案1】:

您可以简单地将数据作为道具传递给组件并使用所需数据调用动作创建者,而不是使用两个连接 HOC

喜欢

export default compose(
  connect((locales:  currentLocaleCode ) => ( currentLocaleCode ),
  (dispatch) => (
    fetchArticles: (dispatch) => (
      fetchPage: =>
        (currentLocaleCode) => dispatch(pagesActions.fetchPage(currentLocaleCode))
    )
  )),
...

在连接的组件中,您可以调用 fetchPage

this.props.fetchPage(this.props.currentLocaleCode);

【讨论】:

嗨,Shubham,我不小心添加了一些不应该存在的额外代码。我现在已经删除了。基本上fetchArticlesfetchPage 不应该相互写入,我的问题是如何避免两次写入connect 关于您的评论,我想避免每次调用我的方法时都必须传递currentLocaleCode,因为它已经在我的状态下可用。

以上是关于将 redux 状态传递给调度程序的主要内容,如果未能解决你的问题,请参考以下文章

在你的 redux 应用程序中哪里有套接字对象? [关闭]

当反应原生应用程序启动时,将初始状态从 API 调用传递给 createStore

如何将状态传递给 firebaseConnect 中的 doc 属性

将状态传递给 React/Redux 中的递归嵌套组件

将 props 传递给 redux 初始状态

react/redux 应用程序:未调度到存储的操作