mobx-like-dva
TypeScript icon, indicating that this package has built-in type declarations

1.0.3 • Public • Published

use mobx like dva

引入方式

npm install mobx-like-dva --save  或者
yarn add mobx-like-dva -D

and

npm i mobx mobx-react --save

使用方式

配置store

import Store from 'mobx-like-dva'

import model1 from 'model1'

const store = new Store()
store.init([model1])

export default store

配置model

export default {
  namespace: 'test',
  state: {
	name: 'mobx'	
  },
  effects: {
    async fn(payload={},{update,get,dispatch}){
      const {name} = payload
      // 异步方法 如请求
      // const data = await fetch(url)
      update({
        name: 'test', // model的namespace
        payload: {
          name: name			
        }
      })   
    }		
  }
}

组件使用

// 类组件
import React from 'react'
import store from 'store'
import {observer} from 'mobx-react'

@observer
class Text extends React.Component{
  
	
  handleChange = () => {
     const {update,dispatch} = store
    // 直接改变
    update({
      name: 'test',
      payload: {
        name: 'change text'
      }
    })
    // 调用model中effects改变
    dispatch({
      type: 'test/fn',
      payload: {
         name: 'change text'
      }
    })
  }	
  render() {
    const state = store.getState('test')
    const {name} = state
    return (
      <div>
        {name}
        <button onClick={this.handleChange}>改变name</button>
      </div>			
    )  
  }
}


// 函数组件
const FnComponent = () => {
  // 用法和上述一样了	
  return (
    <div>hello world</div>
  )
}
export default observer(FnComponent)

实例属性 storeIns

属性名称 解析说明 类型 举例
init 加载model model[] store.init([model1,model2])
getState 获取store的state (name?:string) => ({}) const data = store.getState('test')
update 更新state值 ({name:string,payload:{[key:string]:any}}) store.update({name:'test',{aa:'111'}})
dispatch 触发model的effects ({type:string,payload:any}) => voild store.dispatch({type:'test/effectName',payload:1234})

effects参数 (payload,{update,get,dispatch})

payload: 随意传入的参数

update: 对应实例的update方法

get : 对应实例的getState方法

dispatch: 对应实例的dispatch方法

Readme

Keywords

Package Sidebar

Install

npm i mobx-like-dva

Weekly Downloads

1

Version

1.0.3

License

ISC

Unpacked Size

6.22 kB

Total Files

4

Last publish

Collaborators

  • deepshen