最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文搞懂redux在react中的初步用法

 更新時間:2021年06月09日 16:34:25   作者:豐柏林  
Redux是JavaScript狀態(tài)容器,提供可預測化的狀態(tài)管理,今天通過本文給大家分享redux在react中使用及配置redux到react項目中的方法,感興趣的朋友跟隨小編一起看看吧

Redux是一個數(shù)據(jù)狀態(tài)管理插件,當使用React或是vue開發(fā)組件化的SPA程序時,組件之間共享信息是一個非常大的問題。例如,用戶登陸之后客戶端會存儲用戶信息(ID,頭像等),而系統(tǒng)的很多組件都會用到這些信息,當使用這些信息的時候,每次都重新獲取一遍,這樣會非常的麻煩,因此每個系統(tǒng)都需要一個管理多組件使用的公共信息的功能,這就是redux的作用。

如果你是從來沒有接觸過redux的開發(fā)者,希望您能夠有耐心的看一看,我也是看好很多博客慢慢自己總結(jié)的?。。?!比大佬們一個一個分布找要強一點。

import React, { Component, Fragment } from 'react';

//Class引入
import { connect } from 'react-redux';

//Hook引入
import { useSelector, useDispatch } from 'react-redux'

import { add, clear } from '../../redux/actions/count';


//hook 展示組件
const CountItem = (props) => {
    // 解構(gòu)出來
    const {
        count,
        flag,
        add,
        clear
    } = props
    return (
        <>
            <h2>當前求和為:{count}</h2>
            <h3>當前Flag:{flag ? 'true' : 'false'}</h3>
            <button onClick={add}>點擊+1</button>
            <button onClick={clear}>清零</button>
        </>
    )
}

//hook 容器組件
const Count = () => {
    const count = useSelector(state => state.sum)
    const flag = useSelector(state => state.flag)
    const dispatch = useDispatch()

    const countAdd = () => {
        console.log(add.type)
        dispatch(add(1))
    }

    const clearNum = () => {
        dispatch(clear())
    }

    return <CountItem count={count} flag={flag} add={countAdd} clear={clearNum}  />
}

export default Count



// class 展示組件
// class Count extends Component {
//     add = () => {
//         // 通知redux
//         this.props.add(1);
//     };
//     clear = () => {
//         this.props.clear();
//     };
//     render() {
//         return (
//             <Fragment>
//                 <h2>當前求和為:{this.props.count}</h2>
//                 <h3>當前Flag:{this.props.flag ? 'true' : 'false'}</h3>
//                 <button onClick={this.add}>點擊+1</button>
//                 <button onClick={this.clear}>清零</button>
//             </Fragment>
//         );
//     }
// }

// class 容器組件
// export default connect(
//     // 1.狀態(tài)
//     state => ({ count: state.sum, flag: state.flagState }),
//     // 2.方法
//     { add, clear }
// )(Count);

基本的使用差不多就是這個樣子,我們在hook上面用到的關(guān)鍵方法就是useSelector來使用redux的state、用dispatch來調(diào)用reduce;在class組件中用connect進行state和方法(reduce)的關(guān)聯(lián)。

這里面難點就在于reduce和state

這里的reduce是什么

上面的代碼里面我們用到了add和clear這兩個方法,我們新建一個js文件來實現(xiàn)這兩個方法。

// 為Count組件創(chuàng)建action對象
// 引入常量
import { ADD, CLEAR } from '../constant';

// 創(chuàng)建加一action對象的函數(shù)
export const add = data => ({
    type: ADD,
    data,
});

// 創(chuàng)建清零action對象的函數(shù)
export const clear = data => ({
    type: CLEAR,
    data,
});

上面有常量----這是為了方便actionType的統(tǒng)一管理,創(chuàng)建對應的action對象有助于代碼模塊化。
貼上,自己建一個constant.js放進去

export const ADD = 'add';
export const CLEAR = 'clear';

到這里我們的action對象定義的差不多了,我們要進行reducer的管理了。也就是dispatch分發(fā)上面的action對象來實現(xiàn)state的更新

在reducer文件夾里面我們定義一個count.js

// 為Count組件創(chuàng)建一個reducer
// reducer接收兩個參數(shù):之前狀態(tài)的preState,動作對象action

import { ADD, CLEAR } from '../constant.js';

// 設(shè)定初始狀態(tài)
const initState = 0;

export default function addReducer(preState = initState, action) {
    // 從action中獲取type和data
    const { type, data } = action;
    // 根據(jù)type決定如何加工數(shù)據(jù)
    switch (type) {
        case ADD:
            return preState + data;
        case CLEAR:
            return 0;
        // 初始化動作
        default:
            return preState;
    }
}

上面的方法要通過dispatch來進行type的分發(fā)調(diào)用(強調(diào)加一)

到這里使用就完成了 接下來看配置redux到react項目中

這里就不要倒敘了,因為這里倒敘不合理。
這里關(guān)鍵的幾個配置
store.js的配置和全局的store的使用

先看全局使用store
在你的根路由下面用Provider包裹App。

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

ReactDOM.render(
    // Provider包裹App,目的:讓App所有的后代容器組件都能接收到store
    <Provider store={store}>
        <App />
    </Provider>,
    document.getElementById('root')
);

這里面有個redux/store.js 看代碼

// 整個文檔只有一個store對象,createStore接收兩個參數(shù),第一個是state樹,第二個是要處理的action
//applyMiddleware 匯總所有的中間件變成一個數(shù)組依次執(zhí)行,異步處理
import { createStore, applyMiddleware } from 'redux';
//中間件
import thunk from 'redux-thunk';
//匯總所有的reducer
import allReducers from './reducers/index';
//這里是goole的調(diào)試調(diào)試工具,具體使用:百度
import { composeWithDevTools } from 'redux-devtools-extension';

// 暴露store
export default createStore(allReducers, composeWithDevTools(applyMiddleware(thunk)));

到這里這篇文章就要結(jié)束了,里面的一些執(zhí)行流程和原理我還不是理解,接下來仍要多多鞏固,多多學習。

以上就是一文解決redux在react中的初步使用的詳細內(nèi)容,更多關(guān)于redux在react中使用的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解關(guān)于react-redux中的connect用法介紹及原理解析

    詳解關(guān)于react-redux中的connect用法介紹及原理解析

    本篇文章主要介紹了詳解關(guān)于react-redux中的connect用法介紹及原理解析,非常具有實用價值,需要的朋友可以參考下
    2017-09-09
  • react中常見hook的使用方式

    react中常見hook的使用方式

    這篇文章主要介紹了react中常見hook的使用方式與區(qū)別,幫助大家更好的理解和學習使用react,感興趣的朋友可以了解下
    2021-04-04
  • React使用useEffect解決setState副作用詳解

    React使用useEffect解決setState副作用詳解

    這篇文章主要為大家介紹了React使用useEffect解決setState副作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • React+Antd+Redux實現(xiàn)待辦事件的方法

    React+Antd+Redux實現(xiàn)待辦事件的方法

    這篇文章主要介紹了React+Antd+Redux實現(xiàn)待辦事件的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • 教你如何從 html 實現(xiàn)一個 react

    教你如何從 html 實現(xiàn)一個 react

    react是一個簡單的javascript UI庫,用于構(gòu)建高效、快速的用戶界面。它是一個輕量級庫,因此很受歡迎。接下來通過本文給大家分享從 html 實現(xiàn)一個 react的方法,一起看看吧
    2021-07-07
  • 詳解如何封裝和使用一個React鑒權(quán)組件

    詳解如何封裝和使用一個React鑒權(quán)組件

    JavaScript?和?React?提供了靈活的事件處理機制,特別是通過利用事件的捕獲階段來阻止事件傳播可以實現(xiàn)精細的權(quán)限控制,本文將詳細介紹這一技術(shù)的應用,并通過實踐案例展示如何封裝和使用一個?React?鑒權(quán)組件,需要的可以參考下
    2024-03-03
  • react源碼合成事件深入解析

    react源碼合成事件深入解析

    這篇文章主要為大家介紹了react源碼合成事件深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • React18?中的?Suspense?API使用實例詳解

    React18?中的?Suspense?API使用實例詳解

    這篇文章主要為大家介紹了React18?中的?Suspense?API使用實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • React Native中Mobx的使用方法詳解

    React Native中Mobx的使用方法詳解

    這篇文章主要給大家介紹了關(guān)于React Native中Mobx的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • 詳解關(guān)于React-Router4.0跳轉(zhuǎn)不置頂解決方案

    詳解關(guān)于React-Router4.0跳轉(zhuǎn)不置頂解決方案

    這篇文章主要介紹了詳解關(guān)于React-Router4.0跳轉(zhuǎn)不置頂解決案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05

最新評論

全椒县| 桓仁| 澜沧| 保康县| 连州市| 建平县| 湾仔区| 林口县| 虎林市| 南漳县| 松阳县| 霍城县| 庐江县| 荔浦县| 安达市| 苏尼特左旗| 富顺县| 太康县| 通榆县| 北票市| 石渠县| 遂平县| 凌海市| 邯郸县| 通山县| 正安县| 威远县| 烟台市| 苏尼特左旗| 孝义市| 乐山市| 通辽市| 宁乡县| 潞城市| 深泽县| 呼和浩特市| 叙永县| 台北县| 荆门市| 西城区| 香港 |