溫馨提示×

溫馨提示×

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

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

react.js框架Redux的示例分析

發(fā)布時間:2021-09-11 14:29:59 來源:億速云 閱讀:162 作者:小新 欄目:開發(fā)技術

小編給大家分享一下react.js框架Redux的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

react.js框架Redux

https://github.com/reactjs/redux

安裝:

npm install redux react-redux
#基于react,我們在前面已經(jīng)安裝過了

Redux參考文檔:
http://redux.js.org/

Redux核心概念:Store

我們可以簡單的理解為就是用來存儲 各個組件的State或你自己定義的獨立的state,對state進行統(tǒng)一讀取、更新、監(jiān)聽等操作。
http://redux.js.org/docs/basics/Store.html

react.js框架Redux的示例分析

Reduce

官方告訴我們redux的基本使用如下:

import {createStore} from "redux";
import todoApp from "./reducers";
let store = createStore(todoApp);

createStore()參數(shù)傳入的是一個函數(shù)Function。
在redux里的概念叫做:Reduce
Reduce的基本形式:

function myFun(state,action){
  // ...
}

當然我們也可以使用esmascript 2015的箭頭函數(shù)形式來定義。

實戰(zhàn)演練

1、我們先來定義一個Reduce

InfoReduce.js:

//測試數(shù)據(jù)
let info = {
    title:"測試標題",
    clicknum:0
};

// 把數(shù)據(jù)通過參數(shù)船體
export  default (state = info, action)=>{


    return state; //返回的就是測試數(shù)據(jù)
}

2、Reduce準備完成,我們開始使用 Redux

import InfoReduce  from "./../redux/InfoReduce";

import {createStore} from "redux";
let store = createStore(InfoReduce);

3、Redux中很重要的概念store已經(jīng)創(chuàng)建,我們看看在組件里如何使用?

// 定義一個名叫InfoDetail的組件
class InfoDetail extends  React.Component{
    // 構造
      constructor(props) {
        super(props);
        // 初始狀態(tài)
        this.state = {
            infoData:store.getState() //通過store對象的方法獲取數(shù)據(jù)
        };
      }


        render(){
            return <div>
                <h3>新聞標題:{this.state.infoData.title}</h3>
                <span>點擊量:{this.state.infoData.clicknum}</span>
                <p><button>修改點擊量</button></p>
            </div>
        }
}

通過store.getState()獲取數(shù)據(jù)。

react.js框架Redux的示例分析

到這里我們基本明白了:Reducers就是規(guī)定的一種函數(shù),它產(chǎn)生新的state然后傳遞給Store;我們的組件通過Store來獲取state更新組件數(shù)據(jù)。

了解action

官方文檔對action的說明:
http://redux.js.org/docs/basics/Actions.html

其實通過action這個單詞我們可以猜測到是用來處理業(yè)務的操作。

在我們前面的代碼中,哪里還有action
我們定義Reducer函數(shù)的時候,第二個參數(shù)就是:

export  default (state, action)=>{}

1、既然action是操作,表示我們組件上事件處理函數(shù)中需要它

<button onClick={this.addClick.bind(this)}>修改點擊量</button>

給按鈕綁定一個點擊事件的函數(shù)addClick

2、下面來看看 addClick 函數(shù)里有什么乾坤?

addClick(){
            //修改state
            store.dispatch({
                type:"INFO_CLICK"
            })

            this.setState({ //更新state
                infoData:store.getState()
            })
        }

this.setState()我們前面學過這是用來更新狀態(tài)(state);
store.dispatch()這又是我們Redux里的東東了,這個方法其實就的調(diào)度action的。
通過type來區(qū)分。

3、根據(jù)我們的需求,我們的action要處理的業(yè)務邏輯是 對clicknum增加

//測試數(shù)據(jù)
let info = {
    title:"測試標題",
    clicknum:0
};

// 把數(shù)據(jù)通過參數(shù)船體
export  default (state = info, action)=>{

    if (action.type == "INFO_CLICK"){
        let oldNum = state.clicknum;
        oldNum++;

        // 返回新的數(shù)據(jù)
        return Object.assign({},state,{clicknum:oldNum});
    }

    return state; //返回的就是測試數(shù)據(jù)
}

我們的Reducer函數(shù)中,通過action.type來判斷,然后處理業(yè)務邏輯相關。

到這里,我們可能迷惑了,Redux怎么還麻煩了,是的,一般是在業(yè)務邏輯很復雜的項目才使用的

react.js框架Redux的示例分析

以上是“react.js框架Redux的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

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

AI