官网链接
文件目录
page 页面 index.tsx
models 每一个model文件都是需要挂在dva实例上的才会生效demo.ts
sevices 写接口的(这里就不写了)demo.ts
实现一个简单的数据流向,将数据存储到dva,然后在页面使用
import { connect } from 'umi';
import { useEffect } from 'react';
import { Dispatch, Action } from 'redux';interface demoProps {dispatch: Dispatch<Action<| 'Demo/addCount'>>
}const View = (props:demoProps)=>{useEffect(()=>{let {count} = props.Demoprops.dispatch({type:'Demo/addCount',payload:{count,count++}callback(){}})},[])return(<h1>{props.Demo.count}<h1>)
}connect(({Demo})=>{return Demo },(dispatch)=>{return {dispatch}}
)(View)
import { Effect } from 'dva';
import { Reducer } from 'redux';
interface DemoStateType{count: number,
}interface DemoType{namespace: string,state: DemoStateType,effects:{addCount: Effect,}reducer:{setDemoState: Reducer}
}export default Demo: Demotype{namespace:'Demo',state: {count: 0,},effects: {*addCount: ({payload,callback}{put,call,select})=>{put({type:'setDemoState',playload})}},reducer: {setDemoState(state,{payload}){return {...state,...payload}}},subscriptions:{ setup({ dispatch, history }) {<!-- 这里是整个model文件第一个执行的地方 -->}})}}
}
}