当前位置: 首页 > news >正文

工程建设工资高吗365优化大师软件下载

工程建设工资高吗,365优化大师软件下载,国泰君安官方网站建设集团,阿里云可以做电影网站官网:入门课 | DvaJS 备注:个人学习 代码示例: getColumns.js const getColumns [{title: 姓名, // 列标题dataIndex: name, // 数据字段名称,与数据中的字段名对应key: name, // 列的唯一键},{title: 年龄, // 列标题dataIn…

官网:入门课 | DvaJS

备注:个人学习

代码示例:

getColumns.js

const getColumns = [{title: '姓名', // 列标题dataIndex: 'name', // 数据字段名称,与数据中的字段名对应key: 'name', // 列的唯一键},{title: '年龄', // 列标题dataIndex: 'age', // 数据字段名称,与数据中的字段名对应key: 'age', // 列的唯一键},
];export default getColumns

model.js

import {Test
} from 'utils/api'export default {namespace: "myName",state: {jsonData: [],},effects: {// 获取列表信息* getMyName({}, {put, call, select}) {const res = yield call(Test);console.log("======================================================",res.data)if (res.meta.statusCode === 200) {// 设置stateyield put({type: "selectMyName",payload: {jsonData: res.data,}});}},},reducers: {selectMyName(state, {payload}) {return {...state, ...payload};},setState(state, { jsonData }) {return {...state,...jsonData};}}
};

 index.js

import React from "react";
import {connect} from "react-redux";
import { Button, Table} from "antd";
import styles from "../ordinary/index.less";
import PermissionDiv from "utils/PermissionDiv";
import getColumns from "../ordinary/getColumns";@connect((state) => {const {myName, login} = state;return {...myName, login};
})
export default class Test extends React.Component {constructor(props) {super(props);}// static getDerivedStateFromProps(nextProps,nextState) {//     console.log("========================",nextProps,nextState)// }componentWillMount() {console.log("666",this.props)//获取已存在的发起单位listthis.props.dispatch({type: 'myName/getMyName'});}render() {const { jsonData } = this.props;console.log("查出来的数据",jsonData)const columns = getColumnsreturn (<div className={styles.box}><div className={styles.topBoxL} id="coll_xzrw"><PermissionDiv perms={"ly-dcp_fill_collection_test_add"}><Button type="primary">新增任务</Button></PermissionDiv></div><Table dataSource={jsonData} columns={columns} rowKey="name" /></div>);}
}

Dva.js 是一个基于 React 和 Redux 的轻量级前端框架,用于帮助开发者更容易地管理应用的状态和副作用。Dva.js 在 React 应用中提供了一种可预测的状态管理方式,并降低了 Redux 的复杂性。dva 是体验技术部开发的 React 应用框架,将上面三个 React 工具库包装在一起,简化了 API,让开发 React 应用更加方便和快捷。

dva = React-Router + Redux + Redux-saga

dva 应用的最简结构

import dva from 'dva';
const App = () => <div>Hello dva</div>;// 创建应用
const app = dva();
// 注册视图
app.router(() => <App />);
// 启动应用
app.start('#root');

 数据流图

核心概念:

  • State:一个对象,保存整个应用状态
  • View:React 组件构成的视图层
  • Action:一个对象,描述事件
  • connect 方法:一个函数,绑定 State 到 View
  • dispatch 方法:一个函数,发送 Action 到 State

State 和 View

State 是储存数据的地方,收到 Action 以后,会更新数据。

View 就是 React 组件构成的 UI 层,从 State 取数据后,渲染成 HTML 代码。只要 State 有变化,View 就会自动更新。

Action


Action 是用来描述 UI 层事件的一个对象。

{type: 'click-submit-button',payload: this.form.data
}

connect 方法

connect 是一个函数,绑定 State 到 View。

import { connect } from 'dva';function mapStateToProps(state) {return { todos: state.todos };
}
connect(mapStateToProps)(App);

connect 方法返回的也是一个 React 组件,通常称为容器组件。因为它是原始 UI 组件的容器,即在外面包了一层 State。

connect 方法传入的第一个参数是 mapStateToProps 函数,mapStateToProps 函数会返回一个对象,用于建立 State 到 Props 的映射关系。

dispatch 方法

dispatch 是一个函数方法,用来将 Action 发送给 State。

dispatch({type: 'click-submit-button',payload: this.form.data
})

dispatch 方法从哪里来?被 connect 的 Component 会自动在 props 中拥有 dispatch 方法。

connect 的数据从哪里来?

dva 应用的最简结构(带 model)

// 创建应用
const app = dva();// 注册 Model
app.model({namespace: 'count',state: 0,reducers: {add(state) { return state + 1 },},effects: {*addAfter1Second(action, { call, put }) {yield call(delay, 1000);yield put({ type: 'add' });},},
});// 注册视图
app.router(() => <ConnectedApp />);// 启动应用
app.start('#root');

数据流图 1

数据流图 2

app.model

dva 提供 app.model 这个对象,所有的应用逻辑都定义在它上面。

const app = dva();// 新增这一行
app.model({ /**/ });app.router(() => <App />);
app.start('#root');

Model 对象的例子

{namespace: 'count',state: 0,reducers: {add(state) { return state + 1 },},effects: {*addAfter1Second(action, { call, put }) {yield call(delay, 1000);yield put({ type: 'add' });},},
}

Model 对象的属性

  • namespace: 当前 Model 的名称。整个应用的 State,由多个小的 Model 的 State 以 namespace 为 key 合成
  • state: 该 Model 当前的状态。数据保存在这里,直接决定了视图层的输出
  • reducers: Action 处理器,处理同步动作,用来算出最新的 State
  • effects:Action 处理器,处理异步动作

Reducer

Reducer 是 Action 处理器,用来处理同步操作,可以看做是 state 的计算器。它的作用是根据 Action,从上一个 State 算出当前 State。

一些例子:

// count +1
function add(state) { return state + 1; }// 往 [] 里添加一个新 todo
function addTodo(state, action) { return [...state, action.payload]; }// 往 { todos: [], loading: true } 里添加一个新 todo,并标记 loading 为 false
function addTodo(state, action) {return {...state,todos: state.todos.concat(action.payload),loading: false};
}

Effect

Action 处理器,处理异步动作,基于 Redux-saga 实现。Effect 指的是副作用。根据函数式编程,计算以外的操作都属于 Effect,典型的就是 I/O 操作、数据库读写。

function *addAfter1Second(action, { put, call }) {yield call(delay, 1000);yield put({ type: 'add' });
}

Generator 函数

Effect 是一个 Generator 函数,内部使用 yield 关键字,标识每一步的操作(不管是异步或同步)。

call 和 put

dva 提供多个 effect 函数内部的处理函数,比较常用的是 callput

  • call:执行异步函数
  • put:发出一个 Action,类似于 dispatch

http://www.ds6.com.cn/news/94870.html

相关文章:

  • 学做企业网站定制网站多少钱
  • iis如何做同时运行两个网站80端口站长工具seo词语排名
  • 番禺网站建设怎样北京网优化seo公司
  • 百度网站关键词优化在哪里做电商培训机构
  • springboot做网站百度竞价推广思路
  • 网站建设的流程网络营销主要是什么
  • 做二手车网站需要什么手续费优化大师电脑版下载
  • 做印刷网站公司简介网络营销的四个特点
  • 网站首页添加浮动飘窗网站设计与开发
  • 外贸网站系统p2p万能搜索种子
  • 网页版游戏推荐神马seo教程
  • 门户网站的设计关键词密度查询站长工具
  • 视频网站开发是什么网络营销机构官方网站
  • 红月私服网站怎么做手机怎么创建网站
  • 艺术培训学校系统网站怎么做成都高端网站建设哪家好
  • 展览网站制作搜索引擎排名优化技术
  • 深圳市龙岗区做网站的公司今日军事头条
  • 石家庄微信网站制作百度域名查询官网
  • 企业网站建设合同书模板网络营销过程步骤
  • 产品设计一般出多少方案石家庄百度关键词优化
  • 百度建网站要多少钱免费外国网站浏览器
  • 网站模板 数据库网络营销和推广的方法
  • 免费自制视频网站网站推广软件排名
  • wordpress取消自动更新惠州百度关键词优化
  • 成都网站建设销售网络营销师证书有用吗
  • 服装公司网站建设写软文怎么接单子
  • 怎么给我 的网站做关键词湖南知名网络推广公司
  • 怎么做网站的后台公司企业网站模板
  • 健身网站开发项目总结百度软件中心官网
  • 用visual做网站seo是做什么工作的