我很难理解神奇的参数 dispatch ,它突然作为 containers/AddTodo.js 示例中演示组件的第一个参数突然出现。

let AddTodo = ({ dispatch }) => {
    /* Omitted */
}

AddTodo = connect()(AddTodo)

至此,我的理解是,第一个AddTodo被认为是 Presentation组件,后者是 Container组件

在这种情况下,演示组件似乎注入(inject)了 dispatch 作为第一个参数。不幸的是,回过头来看,我感到困惑,并意识到 the rest of the presentation component 并非如此。
const Todo = ({ onClick, completed, text }) => (
    /* Omitted */
)

Todo.propTypes = {
  onClick: PropTypes.func.isRequired,
  completed: PropTypes.bool.isRequired,
  text: PropTypes.string.isRequired
}
dispatch 参数如何出现在演示组件中?

最佳答案

当您在 connect() 中使用 AddTodo = connect()(AddTodo) 时,您将使用 AddTodo 注入(inject) dispatch 组件,而无需听商店。 dispatch 现在可以通过 props 在你的组件中使用。如果使用参数解构,即 this.props.dispatch(),则可以将其称为 dispatch() 或直接称为 let AddTodo = ({ dispatch }) ...
以下是官方 redux 文档中的详细说明:https://github.com/reactjs/react-redux/blob/master/docs/api.md#connectmapstatetoprops-mapdispatchtoprops-mergeprops-options

关于reactjs - 组件如何神奇地接收 `dispatch` 作为它的第一个参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39792324/

10-13 00:34