react-redux详细介绍

react-redux详细介绍

1、相关概念

所有的ui组件应该包裹一个容器组件,他们是父子关系;

容器组件是正真和redux打交道的,里面可以随意使用redux的api;

ui组件不可以使用任何redux的api;

容器组件会传给ui组件:(1)redux中保存的状态;(2)用于操作状态的方法;

备注:容器给Ui组件传递:状态、操作状态的方法,均需要通过props传递;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-heeQUXSI-1643114799134)(C:\Users\hp\AppData\Roaming\Typora\typora-user-images\1643015931201.png)]

//引入Count 的ui组件
import CountUI from '../../components/Count'

//引入connect用于连接UI组件与redux
import {connect} from 'react-redux';
import {createIncrementAction} from 'action';

/*
 1、mapStateToProps函数返回的是一个对象;
 2、对象中的key就作为传递给Ui组件props的key,value就作为传递给Ui组件props的value
 3、mapStateToProps用于传递状态
*/
function mapStateToProps(state) {
 return {
 count:state
 }
}

/*
 1、mapDispatchToProps函数返回的是一个对象;
 2、对象中的key就作为传递给Ui组件props的key,value就作为传递给Ui组件props的value
 3、mapDispatchToProps用于传递操作状态的方法
*/
function mapDispatchToProps(dispatch) {
 return {
  jia:(data) => {
   //通知redux执行加法
   dispatch(createIncrementAction(number))
  }
 }
}

//使用connect()()创建并暴露一个Count的容器组件
export default  connect(mapStateToProps, mapDispatchToProps)(CountUI);

App.js

import Count from './containers/Count';//引入Count的容器组件
import store from './redux/store';

export default class App extends Component {
 render() {
   return (
    <div>
     < Count/>
    </div>
   )
 }
}
2、基本使用(优化)
//引入Count 的ui组件
import CountUI from '../../components/Count'

//引入connect用于连接UI组件与redux
import {connect} from 'react-redux';
import {createIncrementAction} from 'action';

//使用connect()()创建并暴露一个Count的容器组件
export default  connect(
state = > ({count:state}),
 //mapDispatchToProps的简写,将其写成对象,会自动进行分发
 {
  jia:createIncrementAction
  }
 )(CountUI);

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import store from './redux/store';
import { Provider} from 'react-redux';

ReactDOM.render(
//此处需要用Provider包裹App,目的是让App所有的后代容器组件都可以接收到store
 <Provider store = {store}>
  <App />
 </Provider>,
 document.getElementById('root')
)
3、求和案例react-rudex优化
1、容器组件和Ui组件整合一个文件;
2、无需自己给容器组件传递store,给<App />包裹一个<Provider store = {store} />即可;
3、使用了react-redux后也不用再给自己检测redux状态的改变了,容器组件可以自动完成这个工作;
4、mapDispatchToProps可以简单的写成一个对象
5、一个组件要和redux打交道,要经过哪几步?
(1)定义好ui组件--不暴露;
(2)引入connect生成一个容器组件,并暴露,写法如下:
connect(
 state=({type:value}),
 {key:xxxAction}
)(UI组件)
(3)在ui组件中通过this.props.xxx读取和操作状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值