我一直在寻找connect()
和mapDispatchToProps()
http://redux.js.org/?q=connect()
但我也发现我已经可以访问props.dispatch()
以获取以下代码:
const app = document.getElementById('app');
const AppRedux = connect()(App);
ReactDOM.render(
<Provider store={store}>
<AppRedux></AppRedux>
</Provider>
, app);
答案 0 :(得分:1)
仅使用connect
,您已经可以访问dispatch
到this.props.dispatch
(如您所述)。
然而,mapDispatchToProps
所做的是通过道具自动绑定你的redux动作。例如:
import customAction from 'actions-directory-in-your-app'
const mapStateToProps = () => {} // no implementing anything for example purposes
const mapDispatchToProps = () => ({ customAction })
const AppRedux = connect(mapStateToProps, mapDispatchToProps)(App)
从现在起,customAction
也会像dispatch
一样成为道具。
答案 1 :(得分:0)
connect的第二个参数接受一个对象,因此您可以使用ES6语法并避免使用mapDispatchToProps。
import { yourAction } from './your_actions_folder'
class Home extends Component{
....
//For dispatch a action you only call the action Creator
this.props.yourAction()
}
export default connect(mapStateToProps,{yourAction})(Home)
答案 2 :(得分:0)
执行mapDispatchToProps的最简单,最有效的方法如下:
import * as myActions from './myActionsFile';
import {bindActionCreators} from 'redux';
...
function mapDispatchToProps(dispatch) {
return {
actions: bindActionCreators(myActions , dispatch)
};
}
你的myActionsFile&#39;会有类似的东西:
export function loadSomeObject(object) {
return {type: types.LOAD_SOME_OBJECT, object};
}
export function saveSomeObject(object) {
return {type: types.SAVE_SOME_OBJECT, object};
}
Redux的bindActionCreator可以帮助您动态绑定您的动作。