React-Redux[下]

简介: React-Redux[下]

React-Redux中中结尾定下了使用react-redux的官方用法是通过provider将store传给App组件,使其下的所有组件都能使用store里面的数据

ReactDOM.render(
//在Provider中使用store属性接收store
    <Provider store={store}>
        <React.StrictMode>
            <App/>
        </React.StrictMode>
    </Provider>
    , document.getElementById('root'));

其本质其实就是使用了一个上下文生产和消费数据,那这么来说的话和我前段时间学过的Context+Provider+Consumer就是一回事

思考:可以不以手写自己封装一个功能类似的组件呢?

小单已经跃跃欲试啦

Step 01.创建文件搭建基本的结构

//context.js
//01.创建上下文需要引入react
import react from 'react'
//0.2创建一个常量保存创建的上下文对象,默认值为空
const storeContext = react.createContext({})
//03.需要在外界使用,所以把它暴露出去
export default storeContext
Step 02.将需要消费storeContext里头保存的数据进行修改

//App.js
import React from 'react';
import ReactDom from 'react-redux'
import storeContext from '../connect/storeContext';
import App from './App';
ReactDOM.render(
//在Provider中使用store属性接收store
    <storeContext.Provider value={store}>
        <React.StrictMode>
            <App/>
        </React.StrictMode>
    </storeContext.Provider>
    , document.getElementById('root'));
Step03. 消费数据

// context.js
//导入依赖包
import React from 'react'
import ReactDom from 'react-dom'
import storeContext from './context';
function connect(mapStateToProps, mapDispatchToProps) {
// 0.2 将传入的storecontext设置为AdvComponent的context
AdvComponent.context=storeContext;
        return AdvComponent;
    return function enhanceComponent(WrappedComponent) {
        class AdvComponent extends React.PureComponent{
            constructor(props,context){
                super(props,context);
                this.state = {
                    storeState : {...mapStateToProps(this.context.getState())}
                }
            }
            componentDidMount() {
                store.subscribe(()=>{
                    this.setState({
                        storeState: {...mapStateToProps(this.context.getState())}
                    })
                })
            }
            componentWillUnmount() {
                store.unsubscribe();
            }
            render() {
                return (<WrappedComponent {...this.props}
                                          {...mapStateToProps(this.context.getState())}
                                          {...mapDispatchToProps(this.context.dispatch)}/>)
            }
        }
    }
}
export default connect;

这样如果是要访问store里面的数据直接通过this.context就可以啦!实现了通过context获取store里头的数据


目录
相关文章
|
JavaScript 前端开发 中间件
「 React 」系列,手动实现一个 redux 与 react-redux
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 一、实现一个简易的 Redux 由于公司项目的技术栈是 React,与之配套的公共状态管理的库是 Redux,最近也研究了其中的原理。
「 React 」系列,手动实现一个 redux 与 react-redux
|
Web App开发 JavaScript 前端开发
React | Redux的使用详解(二)
React | Redux的使用详解(二)
|
JavaScript 前端开发
React 中 Redux 详解
React 中 Redux 详解
|
JavaScript 前端开发 API
[译] 2019 React Redux 完全指南
在本篇 Redux 教程中,我会渐进地解释如何将 Redux 与 React 搭配使用 —— 从简单的 React 开始 —— 以及一个非常简单的 React + Redux 案例。我会解释为什么每个功能都很有用(以及什么情况下做取舍)。
968 0
|
资源调度 JavaScript 前端开发
React-redux
Redux的工作流程 React Component 是页面上的组件 (借书的用户) Store 是存储数据的公共区域(相当于图书馆的管理员) Action Creators 数据传递的过程(当在图书馆借书的时候说的话做的事) Reduc...
1175 0
|
算法 JavaScript 前端开发
对React、Redux、React-Redux详细剖析
相信很多新手朋友们对于React、Redux、React-Redux这三者之间的关系和区别肯定有很多不解和疑惑。这里我们就来详细的剖析一下它们吧。
3775 0
|
JavaScript 前端开发 数据格式
|
存储 JavaScript 前端开发
React-Redux[中]
React-Redux[中]
92 0
|
JavaScript 前端开发 中间件
React(六) —— redux
React(六) —— redux
|
4月前
|
存储 JavaScript 前端开发
React中使用redux
【10月更文挑战第15天】
43 3

热门文章

最新文章