reactjs - 如何在任何连接的组件中获取调度函数引用和动作创建者作为道具
问题描述
我们在连接的组件中获得了 dispatch function ref,但是当我们在 connect 函数中使用 action creator 参数时,它不会像以前那样返回 dispatch function。
案例 1.只有连接函数的第一个参数。
import React, { Component } from 'react';
import { connect } from 'react-redux';
class App extends Component {
render() {
console.log('this.props',this.props)
return (
<div className="App">
App
</div>
);
}
}
const mapStateToProps = (state) => {
return state
}
export default connect(mapStateToProps)(App);
案例 2.也使用 connect 的第二个参数
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { setData } from './actions'
class App extends Component {
render() {
console.log('this.props',this.props)
return (
<div className="App">
App
</div>
);
}
}
const mapStateToProps = (state) => {
return state
}
export default connect(mapStateToProps,{ setData })(App);
我希望在第二种情况下,调度函数 ref 也应该在 props 中列出,但它没有发生。
控制台输出:案例 1. dispatch 显示在 props https://prnt.sc/ne0fpb
案例 2. 没有 dispatch get in props https://prnt.sc/ne0djb
所以请帮助我为什么我没有在案例 2 中获得调度功能?
解决方案
第二个connect
参数 ( mapDispatchToProps
) 默认为dispatch => ({ dispatch })
函数。指定时不应用默认值。
由于mapDispatchToProps
用于提供所有需要的调度程序功能作为组件道具,dispatch
因此不需要道具。
推荐阅读
- java - Kodi JSON-RPC over TCP 无效消息
- c++ - g++ 命令不返回这样的文件或目录
- java - 使用迭代器删除条目时出现 ConcurrentModificationException
- jquery - 如何在我的项目中包含 Bootstrap 3 和 JQuery 数据表?
- r - 使用 roxygen2 控制 NAMESPACE 中 useDynLib 行的顺序
- python - 通过 Scrapy Pipeline 组织项目
- jenkins - 来自 GitHub OATH 的用户无法打开 jenkins 作业(错误 404)
- excel - Vba comboBoxes如何使用Index来获取值
- angular - 使用 ngFor 可观察角度
- python-3.x - 检查 csv 文件 python3 中的非浮点数