• dva -Model


    一、Action 是js对象,是改变State的唯一途径

      通过dispatch函数分发。

      dispatch({ type: 'user/add', // 如果在 model 外调用,需要添加 namespace payload: {}, // 需要传递的信息 });

    二、dispatch函数

      用于触发action函数,action只是描述一个行为的对象,dispatch 就是触发这个行为的方式。Reducer则描述如何改变数据

    三、Reducer

      在dva中,reducers聚合积累的结果是当前model的state对象。通过actions传入的值域当前reduceres中的值进行运算获得新的值,Reducer必须是纯函数。

      app.model({

        namespace:'todos',//model的namespace

        state:[],//model的初始化数据

        reducers:{

          add(state,{payload:todo}){

            return concat(todo);

          }

        }

      })

     dva-Effect  副作用,异步操作,Effects的最终流向是通过Reducers改变state     这个难理解一点点

      

    app.model({
       namespace:'todos',
       effects:{
           *addRemote({payload:todo},{put,call,select}){
               const todos = yield select(state = >state.todos);//这边的state来源于全局的state,select 方法提供获取全局state的能力,也就是说,在这边如果你有需要其他model的数据,则可以使用 state.modelName 来获取
                yield call(addTodo,todo);用于调用异步逻辑,只支持promise
               yield put({type:'add',payload:todo});这里触发action ,action 所调用的 reducer 或 effects 来源于本 model 那么在 type 中不需要声明命名空间,如果需要触发其他非本 model 的方法,则需要在 type 中声明命名空间,如 yield put({ type: 'namespace/fuc', payload: xxx });
        
             }    
         }  
    })        
    

      

      三、dva - Subscription

        Subscriptions 是一种从 源 获取数据的方法,语义:订阅,用于订阅数据源,然后来根据条件触发dispatch 需要的action。

    import key from 'keymaster';
    ...
    app.model({
      namespace: 'count',
      subscriptions: {
        keyEvent(dispatch) {
          key('⌘+up, ctrl+up', () => { dispatch({type:'add'}) });
        },
      }
    });
    

      

        

      

  • 相关阅读:
    性能测试工具LoadRunner11-LR之Virtual User Generator 移动app录制
    性能测试工具LoadRunner10-LR之Virtual User Generator 错误处理函数
    性能测试工具LoadRunner09-LR之Virtual User Generator 日志
    解决粘包-简单版本
    关于三级菜单
    Python学习的第二天
    CSS选择器的权重与优先规则
    keydown/keypress/keyup
    APICloud 实现 使用openFrameGroup引入页面后禁止上下滑动
    WampServer 3.0.6 服务器端配置
  • 原文地址:https://www.cnblogs.com/xiaomingBlog/p/8820705.html
Copyright © 2020-2023  润新知