在Connect函数中有两个主要的参数就是
其中前者很好理解,是返回一个Object 例如
const mapStateToProps = (state, ownProps) => { let obj = { count: state.count + ownProps.count } //返回一个新的Object作为Component的Props return obj }
返回的Object中的key(例如上文中的count)是可以在Component里通过 this.props.count 来调用的
而mapDispatchToProp常规的写法应该是返回一个Object,这个Object与 mapStateToProps 的返回值不同的是
它的value并不是一个固定值,而是一个返回值为dispath()方法的回调函数const mapDispatchToProps = (dispatch, ownProps) => { let actionObject1 = actions.increase(...args); let actionObject2 = actions.decrease(...args); return { increase: ()=>(dispatch(actionObject1)), decrease: ()=>(dispatch(actionObject2)) }
按照分析,mapDispatchToProps的返回值里的Value字段应该是由dispatch的结果
import {switchRightBar} from "../../actions/RightBar"; export connect(()=>({}), {switchRightBar})(UserBox);
原因是官方文档中的
[mapStateToProps(state, [ownProps]): stateProps] (Function) [mapDispatchToProps(dispatch, [ownProps]): dispatchProps] (Object or Function)
mapStateToProps 只能是Function,而mapDispatchToProps既可以是Function,也可以是Object
所以说如果connect第一参数要传空,要使用 ()=>({})
MD。。。我讨厌JS。。。。写法规范这么复杂