react-redux的理解
2024-10-09 02:20:21
理解
react-redux是辅助redux的,我们正常使用redux是很麻烦的,需要在每个组件中去监听数据变化,执行数据更新等,但是通过react-redux,我们可以简化组件使用公共数据的操作
react-redux通过Provider+connect方式完成跨组件传值
底层原理
我们知道跨组件传值有一个方法是context,context通过是Provider+Consumer使用
react-redux和context传值类似:提供的Provider生产者,Consumer结合高阶组件+柯里化函数封装成connect
使用
用Provider包裹根组件,store是自定义属性,属性值是要传递的数据,只要子组件中引入connect,就可以调用store中的值
//根目录index.js
import React from 'react';
import ReactDOM from 'react-dom';
import {HashRouter as Router} from "react-router-dom"
import App from './App';
import {Provider} from 'react-redux';
import store from './store';
import 'lib-flexible';
import './assets/styled/reset.css'; ReactDOM.render(
<Provider store={store}>
<Router>
<App />
</Router>
</Provider>
,
document.getElementById('root')
);
子组件中引入connect,获取store中的值
react-redux简单代码实现
import React,{Fragment}from "react"
import {Consumer} from "../../createContext"
//其实就是react-redux的底层实现,这种函数形式是典型的柯里化函数即返回结果是函数,调用方式:fn()().
export default (Wrapper)=>(mapStateToProps)=>{
return class extends React.Component{
render(){
return (
<Consumer>
{
(value)=>{
let props = mapStateToProps(value);
return <Wrapper {...props}/>
}
}
</Consumer>
)
}}}
使用实现的简单代码
import React, { Component } from 'react';
import connet from "../hoc/connect"
class one extends Component {
render() {...}
}
//函数形式map,可以作为回调函数,在高阶组件封装中调用
const mapStateToProps = (state)=>({
age:state.age,
sex:state.sex
})
export default connet(one)(mapStateToProps);//这是柯里化函数的用法,说明connet是一个柯里化函数
最新文章
- oracle日常——数据库备份
- 如何设置Oracle客户端与服务器的字符集一致
- CSS之照片集效果
- hadoop显示ConnectionrRefused
- SQLServer 开启远程访问,也可逆向思维进行关闭
- html的下拉框的几个基本使用方法
- 不想作死系列--win7远程linux桌面之vncserver
- 有个程序猿要去当CEO了:(二)扬帆起航
- Spring 为Bean对象执行初始化和销毁方法
- Not found org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
- 使用Fiddler改变线上js文件的引用路径
- 排序算法C++实现
- java-jdk动态代理生成的代理类源码
- C#工程详解
- test20180919 递归问题
- flutter 生命周期
- Ant多渠道批量打包
- Lucene 基础知识
- hiveSql常见错误记录
- Django之利用ajax实现图片预览
热门文章
- Three.js实现3D地图实例分享
- C++ 11 +,开坑。
- mysql相关面试题(一)
- 详解 TreeMap
- Redis入门使用 -- 个人总结
- 从零开始的计算机网络基础(图文并茂,1.8w字,面试复习必备)
- python3如何不生成pyc文件
- tensorflow1.0 构建神经网络做非线性归回
- C# 基础知识系列-13 常见类库(三)
- sudo: 在加载插件“sudoers_policy”时在 /etc/sudo.conf 第 0 行出错 sudo: /usr/lib/sudo/sudoers.so 必须只对其所有者可写 sudo: 致命错误,无法加载插件