中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redux在react中怎么用

發布時間:2021-06-10 09:21:23 來源:億速云 閱讀:223 作者:小新 欄目:開發技術

這篇文章主要介紹redux在react中怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

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

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

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) => {
    // 解構出來
    const {
        count,
        flag,
        add,
        clear
    } = props
    return (
        <>
            <h3>當前求和為:{count}</h3>
            <h4>當前Flag:{flag ? 'true' : 'false'}</h4>
            <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>
//                 <h3>當前求和為:{this.props.count}</h3>
//                 <h4>當前Flag:{this.props.flag ? 'true' : 'false'}</h4>
//                 <button onClick={this.add}>點擊+1</button>
//                 <button onClick={this.clear}>清零</button>
//             </Fragment>
//         );
//     }
// }

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

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

這里面難點就在于reduce和state

這里的reduce是什么

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

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

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

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

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

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

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

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

// 為Count組件創建一個reducer
// reducer接收兩個參數:之前狀態的preState,動作對象action

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

// 設定初始狀態
const initState = 0;

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

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

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

這里就不要倒敘了,因為這里倒敘不合理。
這里關鍵的幾個配置
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接收兩個參數,第一個是state樹,第二個是要處理的action
//applyMiddleware 匯總所有的中間件變成一個數組依次執行,異步處理
import { createStore, applyMiddleware } from 'redux';
//中間件
import thunk from 'redux-thunk';
//匯總所有的reducer
import allReducers from './reducers/index';
//這里是goole的調試調試工具,具體使用:百度
import { composeWithDevTools } from 'redux-devtools-extension';

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

以上是“redux在react中怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

萝北县| 博客| 琼海市| 旬阳县| 莒南县| 西丰县| 东安县| 油尖旺区| 晋江市| 原阳县| 三台县| 南宁市| 靖宇县| 普洱| 龙川县| 车致| 乐至县| 丰镇市| 靖边县| 沙河市| 德阳市| 汽车| 禹城市| 岳阳市| 鄂温| 巴林左旗| 启东市| 汉寿县| 城口县| 安岳县| 昌宁县| 龙门县| 沙坪坝区| 安乡县| 永春县| 铅山县| 密山市| 连南| 云南省| 随州市| 吴桥县|