这么一长大段字是connect(selector,_____)(组件)的第二个参数
讲解用法
来到UserModifier,目前没有传selector默认空null,
第二个参数接受函数,返回一个对象,接受一个dispatch
返回什么呢,就是要更新的东西,比如下文要更新user,那就返回一个updateUser,直接调用dispatch
dispatch的第一个参数是action,({type: 'updateUser',第二个是payload,接受一个对象,外部传进来attrs
组件里面不需要dispatch了,直接使用updateUser
这样onchange事件显得很简洁
onChange时候从props里面拿到updateUser,然后传进user的信息e.target.value
const UserModifier = connect(null,(dispatch)={return {updateUser: (attrs)=> dispatch({type: 'updateUser',payload: attrs})}}) ({updateUser,state,children}) => {//const onChange = (e) => {// dispatch ({// type: "updateUser",// payload: {// name: e.target.value/ }})}==================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>const onChange = (e) => {updateUser ({name: e.target.value})}return <div>{children}<input value= {state.user.name}onChange = {onChange}/></div>})
实现connect的第二个参数 mapDispatchToProps
太繁琐了,改名叫dispatchSelector
//redux.js
用法
原来是return里的 dispatch={dispatch}
现在定义 dispatcher
先判断有没有传 dispatchSelector
如果有,就把dispatcher 传给dispatchSelector,如果没有传,使用 {dispatch}
关于dispatch,下文有定义,得提升到上面
const dispatchers = dispatchSelector ? dispatchSelector(dispatch) : {dispatch}
return内容改写自己创建的dispatchers
回到代码,实际上是吧一句话拆成了2句
把第一句写道了函数里,留下一部分让再后面去调用,redux十分喜欢的模式


