我很难理解神奇的参数 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/