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
前端实现俄罗斯方块游戏(内含源码)
前端实现俄罗斯方块游戏(内含源码)
679 2
hutool 判断字符串是否全部为字母组成,包括大写和小写字母和汉字
hutool 判断字符串是否全部为字母组成,包括大写和小写字母和汉字
|
前端开发 Java API
Swagger接口文档 —— 手把手教学,全方位超详细小白能看懂,百分百能用Java版
本文提供了一份详细的Swagger接口文档生成工具的使用教程,包括了导入依赖、配置类设置、资源映射、拦截器配置、Swagger注解使用、生成接口文档、在线调试页面访问以及如何设置全局参数(如token),旨在帮助Java开发者快速上手Swagger。
8901 0
Swagger接口文档 —— 手把手教学,全方位超详细小白能看懂,百分百能用Java版
|
4月前
|
JSON 数据可视化 定位技术
Three.js实现3D地图可视化-省份
本项目实现了地图数据的可视化展示,支持下钻、缩放、旋转等多种交互功能。地图通过 shape 数据描绘,使用 D3 进行坐标转换与渲染,数据可从地图 JSON 工具获取。支持二次开发与离线部署,提供完整源码,欢迎联系获取。
|
存储 前端开发 JavaScript
Web前端主题色更换实现方式全解析(一)
Web前端主题色更换实现方式全解析(一)
403 1
|
存储 JavaScript 前端开发
如何在 React Hooks 中使用 Redux?
【10月更文挑战第1天】
|
Web App开发 数据可视化 搜索推荐
2024年深受用户喜爱的桌面工作安排软件——6款工具精选
本文介绍了六款桌面工作安排软件:板栗看板、Trello、Any.do、TickTick、Asana 和 Monday.com。这些软件通过集成日历、任务管理和项目管理功能,帮助用户优化工作流程、提升个人和团队的生产力。每款软件都有其独特的优势,适合不同的工作场景和需求,如个人任务管理、团队协作、项目管理和创意设计等。选择合适的工具,可以显著提高工作效率和团队协作效果。
1210 1
2024年深受用户喜爱的桌面工作安排软件——6款工具精选
|
JavaScript
Vue3 + Vite + TS项目引入iconfont图标(Svg方式)
前言 每一个项目都避免不了使用各种各样的图标,如果我们使用了 UI 组件库,比如说 ELement 等,那么组件库有一些封装好的图标供我们使用。但是项目是多变的和复杂的,组件库提供的图标很多时候不能满足需求,这个时候就需要我们自己引入想要的图标了。 今天介绍的便是如何将 iconfont 阿里图标库的图标引入到我们的 Vue3 项目中来!
5829 1
Vue3 + Vite + TS项目引入iconfont图标(Svg方式)
|
存储 监控 负载均衡
如何优化Nacos性能?
【6月更文挑战第29天】如何优化Nacos性能?
671 2
|
移动开发 前端开发 JavaScript
react fiber架构【详细讲解,看这一篇就够了】
react fiber架构【详细讲解,看这一篇就够了】
1055 0