dva框架使用

93 阅读2分钟
  1. 通过modal的模式管理一个领域的模型 相当于在全局维护一个state

  2. modal中会包含5个基本属性的对象

    1. namespace:全局的state的key 当你在modal组件外引用时 需要加上此名称

    2. state:默认的state值,为任意类型

    3. reducers:负责接收action 改变state的位置(this.setState)通过dispatch的形式来调用action

      1. dispatching function 是一个用于触发 action 的函数,action 是改变 State 的唯一途径,但是它只描述了一个行为,而 dipatch 可以看作是触发这个行为的方式,而 Reducer 则是描述如何改变数据的

      2. 在 dva 中,connect Model 的组件通过 props 可以访问到 dispatch,可以调用 Model 中的 Reducer 或者 Effects

      3. action:为一个对象,其中包含两个基本值type、payload

        1. type:用来指明具体的行为 通过type指明的行为来调用reducer或effects中的行为或者说方法
        2. payload:用来传递信息
        3. // dispatch内传递的对象就是action对象
          dispatch({
            type: 'user/add', // 如果在 model 外调用,需要添加 namespace
            payload: {}, // 需要传递的信息
          });
          
    4. effects:设计思想来源于 redux-saga 框架 接收各类数据并返回给reducers 用来做state的相关修改

      1. 可能使用到的比较多的函数---put

        1. put用来发送action 而且其中的type也是相当于指明调用的行为 一般为re ducesr中的方法 reducers中的方法接收了action之后 修改相关state

        2. 由于在 redux-saga 的世界里,所有的任务都通用 yield Effects 来完成 所以将会使用yield put的形式

          1. const response = yield (fetchGetPermissions(payload))
                  类似于这种
                  yield put({
                    type: 'currentPermission',
                    payload: response,
                  })
            
    5. connect Model 具体的还待确定

      1. dispatch 方法从哪里来?被 connect 的 Component 会自动在 props 中拥有 dispatch 方法