Dva应用框架

简介: Dva应用框架
什么是Dva?

dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的应用框架

官方地址:https://dvajs.com/

// 1.导入dva
// 因为dva里面内置了react-router,react,react-Dom,react-saga,react-redux,因此这些都再次导入
import dva,{connect} from 'dva'
// 2.创建实例对象
let app  =  new dva();
let homeModel = {
  // 指定命名空间区分不同的model
  namespace:'home',
  // 保存state中的数据
  state: {
    count: 666
  },
  // 相当于react-reducer,保存当前命名空间的一个reducer
  reducers:{
    // add是key,相当于一个type
    // {type:Add, playload}
    add:(state,action)=>{
      return { count: state.count + action.count }
    },
    sub:(state,action)=>{
      return { count: state.count - action.count }
    }
  }
}
const mapStateToProps = (state) =>{
  return{count: state.home.count}
}
const mapDispatchToProps = (dispatch) =>{
  return {
    increment(){
      dispatch({type:"home/add",count:1})
    },
    decrement(){
      dispatch({type:"home/sub",count:1})
    }
  }
}
const AdvHome = connect(mapStateToProps,mapDispatchToProps)(Home)
//3.定义组件
function Home(props){
  return(
    <div>
      Home
      <p>{props.count}</p>
      <button onClick={()=>props.increment()}>增加</button>
      <button onClick={()=>props.decrement ()}>减少</button>
    </div>
  )
}
function App(){
  return(
    <div>
      <AdvHome/>
    </div>
  )
}
// 4.注册路由表,告诉dva要渲染那个组件
app.router(()=><App/>);
// 相当于react-saga,使用model,告诉dva使用哪个model
app.model(homeModel)
//5.启动dva并且把它 渲染到index.html的root上
app.start('#root')

73.png

运行效果.png


72.png

增加.png


71.png

减少.png

感觉这个玩意咋说呢,写法有点复杂,但是核心思想很值得借鉴,不过有点耗费时间成本,我今天因为reducers写成了reducer找了半小时bug,差点把我气坏了,主要是也没有任何的报错提示,难怪state中的数字可以显示,但是按按钮一直效果,气死我了


目录
相关文章
|
存储 前端开发 JavaScript
前端实现俄罗斯方块游戏(内含源码)
前端实现俄罗斯方块游戏(内含源码)
657 2
hutool 判断字符串是否全部为字母组成,包括大写和小写字母和汉字
hutool 判断字符串是否全部为字母组成,包括大写和小写字母和汉字
|
前端开发 Java API
Swagger接口文档 —— 手把手教学,全方位超详细小白能看懂,百分百能用Java版
本文提供了一份详细的Swagger接口文档生成工具的使用教程,包括了导入依赖、配置类设置、资源映射、拦截器配置、Swagger注解使用、生成接口文档、在线调试页面访问以及如何设置全局参数(如token),旨在帮助Java开发者快速上手Swagger。
8578 0
Swagger接口文档 —— 手把手教学,全方位超详细小白能看懂,百分百能用Java版
|
存储 前端开发 JavaScript
Web前端主题色更换实现方式全解析(一)
Web前端主题色更换实现方式全解析(一)
383 1
|
存储 JavaScript 前端开发
如何在 React Hooks 中使用 Redux?
【10月更文挑战第1天】
|
资源调度 JavaScript Windows
'vue-cli-service' 不是内部或外部命令,也不是可运行的程序问题解决
【5月更文挑战第7天】'vue-cli-service' 不是内部或外部命令,也不是可运行的程序问题解决
20173 3
|
JavaScript
Vue3 + Vite + TS项目引入iconfont图标(Svg方式)
前言 每一个项目都避免不了使用各种各样的图标,如果我们使用了 UI 组件库,比如说 ELement 等,那么组件库有一些封装好的图标供我们使用。但是项目是多变的和复杂的,组件库提供的图标很多时候不能满足需求,这个时候就需要我们自己引入想要的图标了。 今天介绍的便是如何将 iconfont 阿里图标库的图标引入到我们的 Vue3 项目中来!
5802 1
Vue3 + Vite + TS项目引入iconfont图标(Svg方式)
|
存储 安全 API
对象存储OSS产品常见问题之在URL中包含签名如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
710 0
|
移动开发 前端开发 JavaScript
react fiber架构【详细讲解,看这一篇就够了】
react fiber架构【详细讲解,看这一篇就够了】
1018 0
|
前端开发 容器
react使用echarts图表
react使用echarts图表
457 0