dva-atr
基于dva和immutable.js的model创建工具
Last updated 3 years ago by yangbin1994 .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install dva-atr 
SYNC missed versions from official npm registry.

dva-atr

对于dva的model进行了扩展

使用

使用前一定要看

$ npm install dva-atr
$ yarn add dva-atr
import { modelCtr, actionCtrCenter } from 'dva-atr'

创建model


import { modelCtr } from 'dva-atr'
import { Map } from 'immutable'

export default modelCtr(({ actionCtr, actionCtrCenter }) => ({

  namespace: 'example',

  state: {},

  effects: {
     * fetch(__, { call, put, select }) {
        const json = yield call(requestMgr.fetch, ...)
        if (json) {
            /**
             * 请在修改model过程当初,保证state的类型始终是你期望的
             */
            yield put(actionCtr.set({
                path: '/',
                value: Map(json)
            }))
        }
    }
  },

  subscriptions: {
    listen({ dispatch, history }) {
      dispatch(actionCtr.set({
        path: 'type',
        value: 'change'
      }))
    }
  }

}))

listen

  • listen可以接受一个函数或者数组(默认监听当前namesapce为路由的路径)

  • listen还可以接受一个对象,key值为监听的路由

  • 注意:监听路由都不需要在前面加上/

 `if (pathname === `/${namespace}`) `

管理组件中使用

actionCtr/reducers

名称 说明
set 设置path路径下的value为新值
setMulti 一次性设置多次,只触发一次渲染
reset 重置path路径下的model为初始化值(modelCtr创建时候,返回的state)
resetMulti 一次性重置多次,只触发一次渲染
update 更新path路径下的model,deal字段为函数oldModel => newModel

import { actionCtrCenter } from 'dva-atr'

const mapDispatchToProps = dispatch => ({
  onBtnClick() {
    dispatch(actionCtrCenter['example'].set({
        path: 'type',
        value: 'change-click'
    }))
    dispatch(actionCtrCenter['example'].update({
        path: 'Index.modal.visible',
        deal: val => !val
    }))
  },
  onLogoutBtnClick() {
    _.forEach(actionCtrCenter, actionCtr => {
        dispatch(actionCtr.reset({
            path: '/'
        }))
    })
  }
})

const mapStateToProps = ({
   example
}) => {
   /**
    * 注意model的类型为immutable,请根据你的需求进行关联
    */  
  return example.toJS()
}


Current Tags

  • 1.1.5                                ...           latest (3 years ago)

6 Versions

  • 1.1.5                                ...           3 years ago
  • 1.1.4                                ...           3 years ago
  • 1.1.3                                ...           3 years ago
  • 1.1.2                                ...           3 years ago
  • 1.1.1                                ...           3 years ago
  • 1.1.0                                ...           3 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 2
Dependencies (31)
Dev Dependencies (1)
Dependents (0)
None

Copyright 2014 - 2017 © taobao.org |