【问题标题】:Chaining redux connect mapStateToProps , to access props inside mapDispatchToProps链接 redux 连接 mapStateToProps ,以访问 mapDispatchToProps 中的道具
【发布时间】:2019-10-03 02:07:59
【问题描述】:

为了访问mapDispatchToProps 内组件的props,我像这样链接了我的连接

export default connect(mapStateToProps, null)(connect(mapStateToProps, mapDispatchToProps)(MyComponent));

然后我设法像这样访问 mapDispatchToProps 中的道具

const mapDispatchToProps = (dispatch,ownProps) => {

    const myProp = ownProps.theProp

}

这是一件坏事吗? 是否存在任何替代方案?

【问题讨论】:

  • 你只想合并多个mapStateToProps
  • 我添加了一个精度,确实我想访问 mapStateToProps 中的道具,通过这样做它可以完美地工作,但我想知道这是否是一件好事,当然还有其他方式存在
  • 我很难理解为什么这是必要的,是因为mapDispatchToProps 中的选择器需要现有的道具作为参数吗?
  • 我想我在这里找到了一些线索:github.com/reduxjs/redux-devtools/issues/250

标签: javascript reactjs redux


【解决方案1】:

这是一件坏事吗?

IMO,这当然很糟糕。 connect() 是一个 HOC。 connect(...)(connect(...)(MyComponent)) 是多余的。

还有其他选择吗?

改用mergeProps 或正确破坏组件并使用redux-saga 来使用公共交互点(redux 存储)。

【讨论】:

    【解决方案2】:

    mapDispatch 连接到 props 和 mapStateToProps 的正确方法是这样的:

    export default connect(mapStateToProps, mapDispatchToProps)(MetaDataTaggingApp);
    

    另外,我认为您不必访问 mapDispatchToProps 中的道具。 mapDispatchToProps 基本上只是告诉您的组件允许使用哪些调度操作。

    const mapDispatchToProps = {
      aReduxAction,
      anotherReduxAction
    }
    

    如果您需要将道具传递到这些调度中,则应该在您调用它们时进行。

    【讨论】:

    • 您绝对可以访问 mapDispatchToProps 中的 ownProps,它在文档中是正确的 react-redux.js.org/using-react-redux/…
    • 啊,我想我从来没有使用过 ownProps。我一直把 mapDispatchToProps 做成一个对象。
    • 在调用时发送道具通常更好,但我不确定这是否是提问者想要它们的原因?不过,这可能是对的。他们调度的动作应该只需要一个参数
    • 我在控制台中返回了一个空对象 ownProps:` const mapDispatchToProps = (dispatch,ownProps) => { console.log(ownProps)`
    • 也许这会对 OP 有所帮助:stackoverflow.com/questions/41198842/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 2020-07-15
    • 1970-01-01
    • 2018-06-15
    • 2019-09-15
    相关资源
    最近更新 更多