redux和react-redux使用教程

方法一、只使用redux对项目进行管理

view

在视图层通过store的dispatch接受action的store.
getStore()来接受reduce中的store值。并通过Store.subscribe进行监听,changeitem实时的改变state中的getSrore值。

action

let Action ={
    addItem(msg){
        return{
            type:'ADD',
            text:msg
        }
    }
}
export default Action;

action中是定义数据的类型的

store

import {createStore} from "redux"
import Reducer from "./Reducer"

let Store=createStore(Reducer)

export default Store;

创建一个store仓库(状态管理器)

reducer

import {combineReducers} from "redux"
import Address from "./Address"

let Reducer=combineReducers({
    Address:Address
})
export default Reducer;

运用拆分(combineReducers)发,可以定义多个state类型,这样也有利于对数据的管理。

方法二、使用redux + react-redux

1.安装第三方库

npm i redux react-redux --save

2.页面构建

  1. 新建ComC文件夹下边有index.js和children.js,在App.js中引入组件
  2. 创建redux文件夹下方包括store.js、action.js、reducer.js
  3. 创reducer.js文件下运用拆分combineReducers,同时将action引入,这样可以创建多个库
	import { combineReducers } from 'redux';
	import { sendResult, sendBool } from './action';
	const reducer = combineReducers({
	    sendResult,
	    sendBool,
	})
	export default reducer;
  1. store.js文件下(创建store库,导入我们自己写好的reducer.js文件)
	import { createStore } from 'redux';
	import reducer from './reducer';
	const store = createStore(reducer);
	export default store;
  1. action文件下(主要处理事件)
	 const init = [
	    { name: '1', key: '1' }
	]

	const sendResult = (state = init, action) => {
	    switch (action.type) {
	        case 'add_result':
	            let arr = [...state];
	            arr.push(action.msg);
	            state = arr;
	            return state;
	        default:
	            return state
	    }
	}

	const sendBool = (state = { bool: false }, action) => {
	    switch (action.type) {
	        case 'boolFalse':
	            return {
	                bool: false
	            }
	        case 'boolTrue':
	            return {
	                bool: true
	            }
	        default:
	            return state
	    }
	}

	module.exports = {
	    sendResult,
	    sendBool,
	}

3.provider(用于包裹整个结构,使整个app都可以获取到store中的数据)
1.使用provider将项目进行包裹,同时传值store

import { Provider } from 'react-redux';
import store from './redux/store';
export default class App extends Component {
    render () {
        return (
            <Provider store={store}>
                <Router>
                    <Switch>
                        <Route path="/home" component={ComC}></Route>
                        <Redirect to="/home" />
                    </Switch>
                </Router>
            </Provider>
        )
    }
}

4.connect(如果我们需要接受provider提供的store,就需要把我们组件使用connect加强,使组件跟store进行关联)
connect参数
在这里插入图片描述

5.connect语法

  1. connect(要接受数组的函数,要发送action的函数)(放入要加强对组件)
  2. 如果只需要接受store或发送action,将另一个函数输入为null就可以了
	import { connect } from 'react-redux';
	const mapDispatchToProps = (dispatch) => {
	    return {
	        sendResult: (msg) => {
	            dispatch({ type: 'add_result', msg })
	        },
	        sendBool: (msg) => {
	            dispatch(msg)
	        }
	    }
	}
	
	export default connect(null, mapDispatchToProps)(ComC);
  1. 可以在this.props中打印出sendResult函数 (可以在reducer中打印state,进行验证是否发送action)

6.使用connect接收state数据(

import { connect } from 'react-redux';

const mapStateToProps = (state) => {
    return state;
}

export default connect(mapStateToProps)(Children);
  1. 可以在render中打印sendResult,进行验证是否发送action;或者在componentWillReceiveProps中打印nextProps也可以
内容概要:本文详细介绍了一种基于Simulink的表贴式永磁同步电机(SPMSM)有限控制集模型预测电流控制(FCS-MPCC)仿真系统。通过构建PMSM数学模型、坐标变换、MPC控制器、SVPWM调制等模块,实现了对电机定子电流的高精度跟踪控制,具备快速动态响应低稳态误差的特点。文中提供了完整的仿真建模步骤、关键参数设置、核心MATLAB函数代码及仿真结果分析,涵盖转速、电流、转矩三相电流波形,验证了MPC控制策略在动态性能、稳态精度抗负载扰动方面的优越性,并提出了参数自整定、加权代价函数、模型预测转矩控制弱磁扩速等优化方向。; 适合人群:自动化、电气工程及其相关专业本科生、研究生,以及从事电机控制算法研究与仿真的工程技术人员;具备一定的电机原理、自动控制理论Simulink仿真基础者更佳; 使用场景及目标:①用于永磁同步电机模型预测控制的教学演示、课程设计或毕业设计项目;②作为电机先进控制算法(如MPC、MPTC)的仿真验证平台;③支撑科研中对控制性能优化(如动态响应、抗干扰能力)的研究需求; 阅读建议:建议读者结合Simulink环境动手搭建模型,深入理解各模块间的信号流向与控制逻辑,重点掌握预测模型构建、代价函数设计与开关状态选择机制,并可通过修改电机参数或控制策略进行拓展实验,以增强实践与创新能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值