这么一长大段字是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

    1. const UserModifier = connect(null,(dispatch)={
    2. return {
    3. updateUser: (attrs)=> dispatch({type: 'updateUser',payload: attrs})
    4. }
    5. }) ({updateUser,state,children}) => {
    6. //const onChange = (e) => {
    7. // dispatch ({
    8. // type: "updateUser",
    9. // payload: {
    10. // name: e.target.value
    11. / }
    12. })
    13. }
    14. ==================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    15. const onChange = (e) => {
    16. updateUser ({name: e.target.value})
    17. }
    18. return <div>
    19. {children}
    20. <input value= {state.user.name}
    21. onChange = {onChange}/>
    22. </div>
    23. })

    实现connect的第二个参数 mapDispatchToProps
    太繁琐了,改名叫dispatchSelector
    //redux.js
    用法
    原来是return里的 dispatch={dispatch}
    image.png
    现在定义 dispatcher
    先判断有没有传 dispatchSelector
    如果有,就把dispatcher 传给dispatchSelector,如果没有传,使用 {dispatch}

    关于dispatch,下文有定义,得提升到上面
    image.png
    const dispatchers = dispatchSelector ? dispatchSelector(dispatch) : {dispatch}

    return内容改写自己创建的dispatchers
    image.png

    回到代码,实际上是吧一句话拆成了2句
    把第一句写道了函数里,留下一部分让再后面去调用,redux十分喜欢的模式
    image.png
    image.png
    image.png