react dva

213 阅读1分钟

react的存储数据dva

1、配置文件

/config.ts
export default defineConfig({
  dva: {
    hmr: true,
  }
});

2、获取dva实例,通过store.dispatch的方式改变数据;

/app.tsx
const store = getDvaApp()._store; // umi 暴露的 getDvaApp 方法获取 dva 实例
store.dispatch({
    //触发reducers 改变值 dva
    type: 'mapdata/setUserName', // namespace/方法名
    payload: { fuserName: '行政测试' }, // 参数
});

3、定义dva数据实体,文件必须放在/models目录下,并且文件的名字需要跟namespace一致。

/models/mapdata.js
export default {
  //dva 使用
  namespace: 'mapdata',
  //数据
  state: {
    fname: 'map',
  },
  //同步修改数据
  reducers: {
    setUserName(state, { payload }) {
      // state是当前状态的值,payload 是调用dispatch时传过来的值
      return {
        ...state,
        fuserName: payload.fuserName, //请求到的数据
      };
    },
  },
};

4、通过connect,将页面dom元素跟数据dva建立关联,通过props获取数据;

/Equipment/index.tst
import {connect } from 'umi';

const Environment: React.FC = (props) => {
  const { mapdata, dispatch } = props;//mapdata是dva数据,dispatch可以
  //console.log('models2', props, mapdata.fuserName);
  const click=()=>{
      dispatch({//dva 用法
        //触发reducers 改变值
        type: 'mapdata/setUserName', // namespace/方法名
        payload: { fuserName: '行政开发' }, // 参数
      });
      console.log('modelsmodels22', mapdata);
  }
      
  }
export default connect(({ mapdata }) => {
  //console.log('models', mapdata);
  return {
    mapdata,
  };
})(Environment);