当前位置:   article > 正文

React-class——Redux、ant Design_react 、reducx、 ant 关系

react 、reducx、 ant 关系

目录

一、Redux

(1)Redux基本认识

(2)store的创建和使用

(3)数据的修改和订阅

二、ant Design

(1)全量引入方式

(2)按需加载

(3)组件API


一、Redux

(1)Redux基本认识

我们为什么需要状态管理器Redux?为了方便的组织和管理组件之间的数据。

 Redux是一个流行的JavaScript框架,为应用程序提供一个可预测的状态容器。Redux基于简化版本的Flux框架,Flux是Facebook开发的一个框架。在标准的MVC框架中,数据可以在UI组件和存储之间双向流动,而Redux严格限制了数据只能在一个方向上流动。

Store:存储数据的公告区域;eg--图书管理员;

React Component:页面组件;eg--借书的用户;

Reducer:数据存放位置;eg--图书记录本;

Action Creators:动作;eg--结束的时候,跟图书管理员说的话;

  • Redux基本原则

    • 单一数据源;

    • state是只读的;

    • 使用纯函数来执行修改;

  • Redux核心API

    • createStore(reducer):创建数据仓库: import {createStore} from "redux";

    • store.getState():用于获取store里面的数据;

    • store.dispatch(action):用于派发action,触发reducer,执行修改动作;

    • store.subscribe(componentMethods):订阅store的修改,只要store发生改变,组件中的回调函数就会被执行;

(2)store的创建和使用

1、使用Redux需要安装该模块

        cnpm i redux –save

2、创建reducer(store/reducer.js),提供数据源,是一个纯函数

  1. // src/store/reducer.js
  2. const defaultState = {
  3. username: "小明",
  4. stulist: ['a', 'b', 'c']
  5. }

2.1、state用于提供为仓库提供数据源,需要给定一个初始值

2.2、action用于对state 进行更新处理,表示要执行的动作,通过dispatch(action)触发;action被传递到reducer内部来处理,action中必须有一个type字段

  1. // src/store/reducer.js
  2. const reducer = (state=defaultState) => {
  3. //action……
  4. return state;//必须返回处理后的state
  5. }
  6. export default reducer;
  1. - 创建数据仓库(store/index.js):createStore()
  2. ```react
  3. // src/store/index.js
  4. import {createStore} from "redux";
  5. import reducer from "./reducer";
  6. const store = createStore(reducer);
  7. export default store;

3、组件内部使用数据:getState()

  1. //组件内部引入仓库
  2. import store from "./store/index";
  3. //获取数据
  4. <h2>{store.getState().username}</h2>

(3)数据的修改和订阅

1、在组件内部定义要执行的动作action,并触发该动作dispatch。

action中type字段是必须的,值通常大写:

  1. addValue() {
  2. const action = {
  3. type: "ADD",
  4. data: "测试数据"
  5. }
  6. store.dispatch(action);
  7. }

2、接收动作并修改数据:通过dispatch触发动作后,会将action传递到reducer函数的第二个参数中

  1. const reducer = (state=defaultState, action) => {
  2. switch(action.type) {
  3. case "ADD":
  4. state.stulist.push(action.data);
  5. break;
  6. default:
  7. break;
  8. }
  9. return state;
  10. }

3、组件中及时响应更新的数据:订阅

  1. componentDidMount() {
  2. // 订阅store改变事件
  3. store.subscribe(this.changeValue.bind(this));
  4. }
  5. changeValue() {
  6. this.setState(store.getState())
  7. }

subscribe函数可以监听Redux中state的变化,一旦Redux中的state发生了变化,render函数就会被调用,页面就会被重新渲染

二、ant Design 

蚂蚁金服(antd)不仅Reac有,Vue也有

(1)全量引入方式

官网:Ant Design of React - Ant Design

1.npm 安装

$ npm install antd --save

2.示例

  1. import { DatePicker,Button } from 'antd';
  2. ReactDOM.render(
  3. <div>
  4. <DatePicker />
  5. <Button type="primary">ant按钮</Button>
  6. </div>
  7. , mountNode);

引入样式

import 'antd/dist/antd.css'; // or 'antd/dist/antd.less'

(2)按需加载

  1. import DatePicker from 'antd/lib/date-picker'; // 加载 JS
  2. import 'antd/lib/date-picker/style/css'; // 加载 CSS
  3. import Button from 'antd/lib/button'; // 加载 JS
  4. import 'antd/lib/button/style/css'; // 加载 CSS

(3)组件API

我们学过的每一个UI框架都有它自己的组件编码风格,只要按照api标准编程即可

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/115659
推荐阅读
相关标签
  

闽ICP备14008679号