dva.js是阿里前端团队开发的一个基于react、redux、webpack的一个前端框架,他能够实现react-redux-webpack环境一键部署,能帮前端工程师节省不少环境搭建的时间。而且经过优化的redux跟原生redux相比使用起来要方便不少。这里来大致讲一下dva.js的用法。

dva.js官方案例:

https://ant.design/docs/react/practical-projects-cn

github:

https://github.com/dvajs/dva

先全局安装dva-cli

  1. cnpm install dva-cli -g

使用dva-cli初始化应用:

  1. dva new your-project-name

然后进入项目目录,新建文件dev.bat,内容如下:

  1. call npm run start

保存后双击dev.bat即可开启开发服务器,并出现初始页面。

这里我们用一个加法计数器来作为演示。

1、routes文件夹内新建demo.js以及demo.css

  1. import {connect} from 'dva'
  2. import styles from './demo.css'
  3.  
  4. function demo({dispatch,num}) { //dispatch用来操作数据模型。
  5.  
  6. function Add() {
  7. console.log(num);
  8. dispatch({
  9. type:"num/add", //num代表数据模型,add代表方法。这里可以通过payload来传递参数。
        // payload: 1,
  10. })
  11. }
  12.  
  13. return(
  14. <div className={styles.checkNum}>
  15. <input type="button" value="+" onClick={Add}/>
  16. <input type="input" value={num}/>
  17. <input type="button" value="-"/>
  18. </div>
  19. )
  20. }
  21.  
  22. export default connect( //将组件与数据模型进行连接。
  23. ({num})=>({num})
  24. )(demo);

demo.css:

  1. .checkNum{
  2. width: 300px;
  3. height: 100px;
  4. border: 1px solid #ccc;
  5. }

2、models文件夹新建文件num.js

  1. export default {
  2. namespace:'num',
  3. state:0,
  4. reducers:{
  5. 'add'(state){ //num可以理解为数据模型,state是数据的初始值,add是方法名,用来修改num用的。如果需要传参可参考官方教程。(payload)
  6. state++;
  7. return state
  8. }
  9. }
  10. }

3、前往src下的index.js,注册num数据模型:

  1. import dva from 'dva';
  2. import './index.css';
  3.  
  4. // 1. Initialize
  5. const app = dva();
  6.  
  7. app.model(require('./models/num').default);
  8. app.router(require('./router').default);

这步如果粗心的话就容易遗漏,务必小心。

4、src文件夹下的router.js内添加demo路由:

  1. import React from 'react';
  2. import { Router, Route, Switch } from 'dva/router';
  3. import IndexPage from './routes/IndexPage';
  4. import demo from './routes/demo'
  5.  
  6. function RouterConfig({ history }) {
  7. return (
  8. <Router history={history}>
  9. <Switch>
  10. <Route path="/" exact component={IndexPage} />
  11. <Route path="/demo" exact component={demo} />
  12.  
  13. </Switch>
  14. </Router>
  15. );
  16. }
  17.  
  18. export default RouterConfig;

这时,访问http://localhost:8000/#/demo即可看到成果。

请大家自行完成减法功能并看懂官方案例以巩固知识。

想要进一步了解dva.js请看下一篇:dva.js的数据获取与渲染。

http://www.cnblogs.com/axel10/p/8548305.html

dva.js 用法总结的更多相关文章

  1. dva.js 用法详解:列表展示

    本教程案例github:https://github.com/axel10/dva_demo-Counter-and-list/tree/master 这次主要通过在线获取用户数据并且渲染成列表这个案 ...

  2. dva.js 上手

    来源:https://pengtikui.cn/dva.js-get-started/ ——------------------------------------------------------ ...

  3. xss其他标签下的js用法总结大全

    前段时间我遇到一个问题,就是说普通的平台获取cookie的语句为↓           Default <script src=js地址></script> 1 <scr ...

  4. jquery.validate.min.js 用法方法示例

    页面html 代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...

  5. jquery.cookie.js 用法

    jquery.cookie.js 用法   一个轻量级的cookie 插件,可以读取.写入.删除 cookie. jquery.cookie.js 的配置 首先包含jQuery的库文件,在后面包含 j ...

  6. 移动端下拉刷新,iScroll.js用法(转载)

    本文转载自: iScroll.js 用法参考 (share)

  7. jq和js用法:入口写法

    jq和js入口写法demo: <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  8. iScroll.js 用法参考 (share)

    分享是传播.学习知识最好的方法 以下这篇文章是iScroll.js官网的中文翻译,尽管自己英文不好,但觉得原作者们翻译的这个资料还是可以的,基本用法介绍清楚了.如果你英文比较好的话,可以看看官网的资料 ...

  9. velocity.js用法整理1

    velocity.js 此框架相对于JQ的运动算法, 有很大的优势. 例如,A和B两个元素,position:absolute;  top:0; 现在让A元素用JQ的animate,B用velocit ...

随机推荐

  1. Spring context:property-placeholder 一些坑

    今天在配置多配置文件的时候偶然发现如果我使用   <context:property-placeholder location="classpath:filePath.properti ...

  2. [翻译] .NET Core 2.1 Preview 1 发布

    [翻译] .NET Core 2.1 Preview 1 发布 原文: Announcing .NET Core 2.1 Preview 1 今天,我们宣布发布 .NET Core 2.1 Previ ...

  3. TzObjectInspector 一例

    TzObjectInspector Github上的一个开源组件!可以做到类似Delphi IDE属性,事件面板的样式!作者持续更新中... 看起来是这个样子: 这个东西用起来并不像想象的那样可以直接 ...

  4. Smarty3.1.3安装使用

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Verdana } span.s1 { } Smarty简介 Smarty是一个PHP的模板引 ...

  5. MysqL主从复制_模式之GTID复制

    基于GTID的复制是从Mysql5.6开始支持的一种新的复制方式,此方式与传统基于日志的方式存在很大的差异,在原来的基于日志的复制中,从服务器连接到主服务器并告诉主服务器要从哪个二进制日志的偏移量开始 ...

  6. 五子棋的斜对角方向上的规则 -- java编程(简单粗暴版)

    五子棋判断输赢规则 --- 斜对角线方向上 一.左上右下方向上 1.分析图 2.代码 /**判断左上右下方向上是否有连续五颗相同颜色的棋子 * 全部遍历法 */ int loop = 0; boole ...

  7. FFmepg 如何在 window 上使用?

    下载FFmepg官网库直接使用即可. avdevice.lib avcodec.lib avfilter.lib avformat.lib avutil.lib postproc.lib swresa ...

  8. Docker系列三:Docker容器管理

    Docker容器管理 1. 单一容器管理 1) 容器的启动 $ docker run --name gitlab-redis -d --volume /srv/docker/gitlab/redis: ...

  9. ubuntu追加磁盘空间

    在用wubi安装的时候,按默认的是20G空间,明显不够用,从Windows上追加空间 首先用win7自带的磁盘分区工具,从任意一个空余空间较多的磁盘划出一块新分区(无损数据)(如NTFS),作为ubu ...

  10. linux SElinux防护 加密解密 gpg签名与认证

    SElinux Security-Enhanced Linux由美国国家安全局主导开发一套强化linux安全的mac扩展模块 selinux的运作机制:集成到linux内核上(2.6及以上)操作系统提 ...