美文网首页
DVAJS(二)使用

DVAJS(二)使用

作者: Viewwei | 来源:发表于2021-01-13 11:40 被阅读0次
  • 安装dva-cli
$ npm install dva-cli -g
$ dva -v
dva-cli version 0.9.1
  • 创建新应用
$ dva new dva-quickstart
  • 执行
$ npm start
  • 项目主要目录介绍
----------------------------src
      |____index //用来创建dva和注册dva的
      |____router // 路由文件
      |____models //保存model文件
  • 路由文件介绍
    路由文件主要是用来配置路由的(大部分静态路由都是这里声明的)
import React from 'react';
import { Router, Route, Switch } from 'dva/router';
import IndexPage from './routes/IndexPage';
import User from "./routes/user"
import {UserDynamic} from "./dynamic/index"
function RouterConfig({ history }) {
  return (
    <Router history={history}>
      <Switch>
        <Route path="/" exact component={IndexPage} />
        <Route path="/user" component={UserDynamic}/>
      </Switch>
    </Router>
  );
}

export default RouterConfig;

  • mode结构介绍

export default {

  namespace: 'example', //命名必须唯一

  state: { //声明state
    currentState:0
  },

  subscriptions: {
//注册model的时候使用
    setup({ dispatch, history }) {  // eslint-disable-line
      console.log("注册数据");
    },
  },

  effects: {
    //副作用函数,数据同步异步请求在这里进行
    *fetch({ payload }, { call, put }) {  // eslint-disable-line
  //
      yield put({ type: 'save' ,action:payload});
    },
  },

  reducers: {
  //reducers 集中处理数据
    save(state, action) {
     const {action:{type}} =action 
     if (type =="add"){
       state.currentState +=1
       return {...state}
     }
      return { ...state, ...action.payload };
    },
  },

};

-使用组件使用dva

import React from 'react';
import { connect } from 'dva';
import {addAction} from "../action/exampleAction"
function IndexPage(props) {
  const{state,add} = props
  return (
    <div>
        <h2>dva 计算</h2>
        <p>当前值:{state}</p>
        <button onClick={e=>add()}>增加</button>
    </div>
  );
}
IndexPage.propTypes = {
};

export default connect(({example})=>({state:example.currentState}),{add:addAction})(IndexPage);
//使用connect进行组件的高级封装。connect需要mapstate,和mapdispatch
  • dynamic 按需导入model
    如果一次全部注册mode,需要发费大量的时间和性能,所以在使用到组件的时候,早注册
import dynamic from 'dva/dynamic';
import {app} from "../index"
export const UserDynamic = dynamic({
    app,
    models:()=>[import("../models/user"),],
    component:() =>import("../routes/user")
})

然后在路由文件修改为

import React from 'react';
import { Router, Route, Switch } from 'dva/router';
import IndexPage from './routes/IndexPage';
import User from "./routes/user"
import {UserDynamic} from "./dynamic/index"
function RouterConfig({ history }) {
  return (
    <Router history={history}>
      <Switch>
        <Route path="/" exact component={IndexPage} />
        <Route path="/user" component={UserDynamic}/> //使用动态组件
      </Switch>
    </Router>
  );
}

相关文章

  • DVAJS(二)使用

    安装dva-cli 创建新应用 执行 项目主要目录介绍 路由文件介绍路由文件主要是用来配置路由的(大部分静态路由都...

  • DvaJS图解

    DvaJS https://dvajs.com/guide/fig-show.html#%E5%9B%BE%E8%...

  • braft-editor使用

    本文的示例代码参考braft-editor 目录 DvaJS braft-editor 七牛云 DvaJS bra...

  • DvaJS

    一、什么是DvaJS 截止 2017.1,最流行的社区 React 应用架构方案如下: 路由: React-Rou...

  • Dvajs

    简介: dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva ...

  • DvaJS

    本文源码地址https://github.com/Colinlyj210/umi-dva React通信 组件会发...

  • dvajs-core在vue的实践

    dvajs dvajs来源于支付宝前端的实践,基于redux、redux-saga和react-router 的轻...

  • Umi + DvaJS

    前言 微信多开项目是为企业销售部门管理销售资源整的项目,开发中遇见了很多问题还是要总结一下滴: 1、 关于UmiJ...

  • dvajs搭建

    初始化 安装 dva-cli 用于初始化项目: 创建项目目录,并进入该目录: 然后运行 npm start 或 y...

  • H5入门01-React+dva+webpack搭建项目框架

    H5入门01-dva+webpack搭建框架 对于移动端开发者而言,开发H5一般使用 React +Dvajs +...

网友评论

      本文标题:DVAJS(二)使用

      本文链接:https://www.haomeiwen.com/subject/wyruaktx.html