react+umi+dva+ts基础基础使用

简介: react+umi+dva+ts基础基础使用

官网链接


umi

dva


文件目录


page 页面 
  index.tsx
models  每一个model文件都是需要挂在dva实例上的才会生效
  demo.ts
sevices  写接口的(这里就不写了)
  demo.ts


实现一个简单的数据流向,将数据存储到dva,然后在页面使用


page/index.tsx

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.Demo
  props.dispatch({
    type:'Demo/addCount',
    payload:{count,count++}
    callback(){
    //获取回调的地方,如果需要操作返回的新数据
    }
  })
  },[])
  return(
  <h1>{props.Demo.count}<h1>
  )
}
connect(
  ({Demo})=>{
  return Demo 
  },
  (dispatch)=>{
  return {dispatch}
  }
)(View)


models/demo.ts

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})=>{
    //payload 接收到的数据
    //callback 将数据返回页面
    //put 用于调用reducer
    //call 用于调用seveice文件里的接口
    //select 可以获取所有模块中存储的值
    put({
    type:'setDemoState',
    playload
    })
  }
  },
  reducer: {
  setDemoState(state,{payload}){
    return {
    ...state,
    ...payload
    }
  }
  },
  subscriptions:{  //这里并没有使用
     setup({ dispatch, history }) {
         // 这里可以用return
         <!-- 这里是整个model文件第一个执行的地方 -->
         //return history.listen((location, action) => {
           //  if (location.pathname === '/users') {
             //    dispatch({
                     // type是用来写effects的函数名
               //      type: 'effects_fnName'
                // });
             }
         })
     }
  }
}
}
相关文章
|
7月前
|
开发框架 自然语言处理 前端开发
【第25期】一文读懂React企业级前端应用框架Umi
【第25期】一文读懂React企业级前端应用框架Umi
370 0
|
7月前
|
人工智能 JSON 前端开发
react17+ts 学习
react17+ts 学习
|
7月前
|
前端开发
vue+ts或者react+ts如何使用animate.css
vue+ts或者react+ts如何使用animate.css
101 0
|
4月前
|
前端开发
React使用useRef ts 报错
【8月更文挑战第17天】
75 4
|
3月前
|
资源调度 JavaScript 前端开发
使用vite+react+ts+Ant Design开发后台管理项目(二)
使用vite+react+ts+Ant Design开发后台管理项目(二)
|
4月前
|
前端开发 C++
使用 Vite 创建 React+TS+SW 项目并整合 AntDesign 、Scss 等组件或插件
本文记录了如何使用Vite创建一个React+TypeScript+Service Workers(SW)项目,并整合AntDesign组件库和Scss等插件,包括项目的创建、配置问题解决、AntDesign和Scss的整合方法。
301 1
|
7月前
|
前端开发 JavaScript 架构师
react+typescript+umi+dva+antd
react+typescript+umi+dva+antd
110 0
|
7月前
|
资源调度 前端开发 定位技术
React umi地图的展示
React umi地图的展示
|
7月前
|
前端开发
React umi框架局部请求拦截器
React umi框架局部请求拦截器
114 0
|
7月前
|
前端开发 JavaScript
React 配置别名 @ ( js/ts 项目中通过 webpack.config.js 配置)
React 配置别名 @ ( js/ts 项目中通过 webpack.config.js 配置)
181 0