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'
                // });
             }
         })
     }
  }
}
}
相关文章
|
21天前
|
前端开发
vue+ts或者react+ts如何使用animate.css
vue+ts或者react+ts如何使用animate.css
35 0
|
21天前
|
开发框架 自然语言处理 前端开发
【第25期】一文读懂React企业级前端应用框架Umi
【第25期】一文读懂React企业级前端应用框架Umi
154 0
|
21天前
|
人工智能 JSON 前端开发
react17+ts 学习
react17+ts 学习
|
21天前
|
前端开发 JavaScript 架构师
react+typescript+umi+dva+antd
react+typescript+umi+dva+antd
32 0
|
21天前
|
资源调度 前端开发 定位技术
React umi地图的展示
React umi地图的展示
|
21天前
|
前端开发
React umi框架局部请求拦截器
React umi框架局部请求拦截器
|
21天前
|
前端开发 JavaScript
React 配置别名 @ ( js/ts 项目中通过 webpack.config.js 配置)
React 配置别名 @ ( js/ts 项目中通过 webpack.config.js 配置)
48 0
|
21天前
|
JavaScript 前端开发
React 创建 js 与 ts 项目
React 创建 js 与 ts 项目
29 0
|
6月前
|
前端开发
react在ts中提示ref问题
react在ts中提示ref问题
56 0
|
9月前
|
前端开发 JavaScript
React 配置别名 @ ( js/ts 项目中通过 webpack.config.js 配置)
React 配置别名 @ ( js/ts 项目中通过 webpack.config.js 配置)
154 0