【问题标题】:Redux action creators state access best practicesRedux 操作创建者状态访问最佳实践
【发布时间】:2016-04-29 13:50:05
【问题描述】:

在 redux 中,当我们需要访问与 componentProps 不直接相关但由该组件触发的 state 属性(即:存储在 state 中的祖父组件 id)时,我们应该尝试传递这部分从触发事件的组件到动作创建者的状态,即:

onClick={() => doSomething(grandParentId)}

----

function doSomething(grandParentId) {
  console.log(grandParentId)
}

或者我们应该使用 redux-thunk 从 getState 获取数据?

onClick={doSomething}

----

function doSomething() {
  return (dispatch, getState) => {
    console.log(getState().grandParentId)
  }
}

我知道答案听起来第一种方法更合适,但不知何故我觉得 getState 和 redux-thunk 会导致不好的做法,我想知道什么时候应该使用它。

【问题讨论】:

    标签: reactjs redux redux-thunk


    【解决方案1】:

    如果您的组件中已经有该信息,我不明白为什么不将其传递给您的动作创建者。在我看来,数据流更容易遵循这种方式。

    只有当我需要访问我无法通过动作创建器传递的状态树的一部分时,我才会利用 getState()

    【讨论】:

      【解决方案2】:

      如果数据已经处于 redux 状态,那么我将使用getState 访问它。传递的参数越少,IMO 就越简单。

      【讨论】:

      • 但是数据不是一直在状态吗?
      • 我不确定你的意思
      • 您是在说:“如果数据已经处于 redux 状态”...据我了解,所有应用程序数据都应该处于(或可访问)该状态。跨度>
      • “据我了解,所有应用程序数据都应该处于(或可从)状态。” ——你是说所有应用数据都应该处于 redux 状态?是否所有应用程序数据都应该存在于 redux 中,或者状态是否也应该存在于组件中,这是值得商榷的。 github.com/rackt/redux/issues/159
      猜你喜欢
      • 2019-01-01
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 2017-08-15
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多