当前位置:网站首页>Instructions for Redux
Instructions for Redux
2022-07-06 17:04:00 【Society, you Lei brother, life is hard, don't bend down】
Redux The space

The concept is introduced :
redux There are three core concepts
1 action
The object of action
contain 2 Attributes
type: Identity properties , The value is a string , only , Necessary attribute
data: Data attribute , Any value type , Optional attribute
2 reducer
- Used to initialize the State 、 Processing status .
- When processing , According to the old state and action, Generate new state The pure function of .
3 store
take state、action、reducer Connected objects ,
- getState(): obtain state
- dispatch(action): distribution action, Trigger reducer call , Generate new state
- subscribe(listener): Register to listen , When new state when , Automatically call
redux It can help us manage the state of data in a unified way , First installation redux
npm install --save redux
establish store.js file , introduce store Builder
import {
createStore,applyMiddleware} from 'redux';
introduce reducer
import countRecucer from './count_reducer';
/* introduce redux-thunk Asynchronous Support */
import thunk from 'redux-thunk';
// take store Expose
export default createStore(countRecucer,applyMiddleware(thunk));
establish count_reducer.js file
reducer The essence of is actually a function , There are two parameters , They are the previous states prestate And action objects action , Under initial conditions prestate by undefined, We can assign parameters
import {
INCREMENT,DEINCREMENT} from './constant';
let initCount = 0;
function countReducer(prestate=initCount,action){
const {
type,data} = action;
switch(type){
case INCREMENT:
return prestate+data;
case DEINCREMENT:
return prestate-data;
default:
return prestate;
}
}
export default countReducer;
establish constant.js file
Of this module action Object's type Property to set a constant value , The purpose is to standardize and prevent mistakes
export const INCREMENT = 'increment';
export const DEINCREMENT = 'deincrement';
establish count_action.js file
/* This component is specially designed for count Component generation action object */
import {
INCREMENT,DEINCREMENT} from './constant';
// import store from './store'
export const createIcrementAction = data =>({
type:INCREMENT,data});
export const createDeIcrementAction = data =>({
type:DEINCREMENT,data});
/* asynchronous action, Is to deal with in the function action, but store General objects are handled by default , So we need to introduce redux-thunk Middleware to support the processing of functions */
export const createAsyncIcrementAction = (data,time)=>{
/* The first parameter is store Added for us , Know that you need to handle functions , The default incoming , Avoid introducing additional store */
return (dispatch)=>{
setTimeout(() => {
dispatch(createIcrementAction(data));
}, time);
}
}
Used in components redux
import store from './redux/store';
import {
createIcrementAction,createDeIcrementAction,createAsyncIcrementAction} from './redux/count_actions'
increment = ()=>{
let value = this.sel.value;
store.dispatch(createIcrementAction(value*1));
}
deincrement = ()=>{
let value = this.sel.value;
store.dispatch(createDeIcrementAction(value*1));
}
incrementIfOdd=()=>{
if(store.getState() % 2 !==0){
let value = this.sel.value;
store.dispatch(createIcrementAction(value*1));
}
}
It should be noted that if the page responds to updates, you need to manually subscribe in the component
componentDidMount(){
store.subscribe(()=>{
this.setState({
});
})
}
react-redux In combination with
react-Redux Divide all components into two major categories ,UI Components and container components . It will help us automatically redux Data is linked to front-end data , You can realize two-way data binding without manual subscription .
UI Components
- Only responsible for UI Presentation , Without any business logic
- adopt props receive data ( General data and functions )
- Do not use any Redux Of API
Container components
- Responsible for managing data and business logic , Not responsible for UI Presentation
- Use Redux Of API
Use
index.js file
provider It can help us pass in at one time store, It will help us to store Pass on to UI Components to use
import store from './redux/store';
import {
Provider} from 'react-redux';
<Provider store={
store}>
<App/>
</Provider>
store.js file
const allReducer = combineReducers({
addcount:countRecucer,
addperson:personReducer
});
Used in components react-redux
/* introduce connect Used to connect to UI Components and redux, At the beginning, I received two functions as parameters , The first function can be called mapStateToProps Mapping , The first argument to the function is state data , The second function can be called mapDispatchToProps Mapping , The first parameter is dispatch Method I use the abbreviation below .*/
import {
connect} from 'react-redux'
export default connect((state)=>({
count:state.addcount,personnum:state.addperson}),
{
jia:createIcrementAction,
jian:createDeIcrementAction,
jiaAsync:createAsyncIcrementAction})(Count)
<p> The current sum is {this.props.count}</p>
<h4> The current number is :{this.props.personnum}</h4>
边栏推荐
- [graduation project] QT from introduction to practice: realize imitation of QQ communication, which is also the last blog post in school.
- 汇编语言寻址方式
- Many papers on ByteDance have been selected into CVPR 2021, and the selected dry goods are here
- Monomer application concept
- Compile homework after class
- 姚班智班齐上阵,竞赛高手聚一堂,这是什么神仙编程大赛?
- Train 100 pictures for 1 hour, and the style of the photos changes at will. There is a demo at the end of the article | siggraph 2021
- Shell_ 03_ environment variable
- Fdog series (III): use Tencent cloud SMS interface to send SMS, write database, deploy to server, web finale.
- 服务器端渲染(SSR)和客户端渲染(CSR)的区别
猜你喜欢

Idea resolving jar package conflicts

8086 CPU 内部结构

汇编语言段定义

Description of project structure configuration of idea

我走過最迷的路,是字節跳動程序員的腦回路

Notes on how the network is connected

Resume of a microservice architecture teacher with 10 years of work experience

字节跳动海外技术团队再夺冠:高清视频编码已获17项第一

Activiti directory (V) reject, restart and cancel process

Shell_ 01_ data processing
随机推荐
Eureka high availability
Monomer application concept
Introduction to microservices
Solr new core
~71 abbreviation attribute of font
字节跳动海外技术团队再夺冠:高清视频编码已获17项第一
我走過最迷的路,是字節跳動程序員的腦回路
8086 内存
When it comes to Google i/o, this is how ByteDance is applied to flutter
DS18B20數字溫度計系統設計
唯有学C不负众望 TOP5 S1E8|S1E9:字符和字符串&&算术运算符
MySQL字符串函数
Fdog series (I): think about it. It's better to write a chat software. Then start with the imitation QQ registration page.
The difference between URI and URL
一个数10年工作经验的微服务架构老师的简历
在 vi 编辑器中的命令模式下,删除当前光标处的字符使用 __ 命 令。
GCC error: terminate called after throwing an instance of 'std:: regex_ error‘ what(): regex
Shell_ 05_ operator
Activiti目录(一)重点介绍
redux使用说明