Reactjs 在React/Redux中,作为发送任何动作的道具进行一般发送是否合适?
其中一个是代码Reactjs 在React/Redux中,作为发送任何动作的道具进行一般发送是否合适?,reactjs,redux,react-redux,Reactjs,Redux,React Redux,其中一个是代码 // action creator function loadData(dispatch, userId) { // needs to dispatch, so it is first argument return fetch(`http://data.com/${userId}`) .then(res => res.json()) .then( data => dispatch({ type: 'LOAD_DATA_SUCCESS'
// action creator
function loadData(dispatch, userId) { // needs to dispatch, so it is first argument
return fetch(`http://data.com/${userId}`)
.then(res => res.json())
.then(
data => dispatch({ type: 'LOAD_DATA_SUCCESS', data }),
err => dispatch({ type: 'LOAD_DATA_FAILURE', err })
);
}
// component
componentWillMount() {
loadData(this.props.dispatch, this.props.userId); // don't forget to pass dispatch
}
似乎mapDispatchToProps
只是将一般分派映射为props(作为this.props.dispatch
),因此该组件可以分派任何操作
首先,它是一个好的表单,还是只是一个示例,但我们应该对其进行特定的分派,例如this.props.dataReceived
其次,对于上面的代码,mapDispatchToProps
将编写为:
const mapDispatchToProps = dispatchOfReduxStore => {
return {
dispatch: dispatchOfReduxStore
}
}
甚至只是:
const mapDispatchToProps = dispatch => {
return {
dispatch
}
}
并简化为:
const mapDispatchToProps = dispatch => ({ dispatch })
而这个.props.dispatch
变成了一个多功能的dispatch
我还发现,当我们在
connect()
中省略mapDispatchToProps
时,this.props.dispatch
自动可用。我认为将dispatch
绑定到使用mapDispatchToProps
的操作的主要原因是隐藏连接组件的redux
如果不绑定dispatch
,您的组件必须知道您的操作是什么,并且记住,如果不将它们作为dispatch
的参数调用,它们将不会执行任何操作
通过绑定,组件只知道它在props
中有这些函数,它可以在需要时调用这些函数
另一个好处可以说是代码更简洁,因为您可以只调用this.props.myAction()
而不是this.props.dispatch(myAction())
我不认为这是对还是错。我认为其中一些是偏好。我更喜欢把我的组件写在他们只知道给他们的道具的地方。但您可能更愿意明确说明您的组件正在使用redux来分派操作。他不是在谈论映射
dispatch
他是在谈论映射操作creators@sylvanaar我是说为什么会有一个道具。调度?以前从未见过,如果不提供mapDispatchToProps
,则插入dispatch
是connect
的默认行为。如果你真的提供了它-你必须自己注射-就像你发现的那样。我明白了。。。默认情况下,您的组件将收到分派,即,当您不向connect()提供第二个参数时