国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

「 React 」redux

kevin / 422人閱讀

摘要:簡(jiǎn)介是一個(gè)獨(dú)立專門用于做狀態(tài)管理的庫不是插件庫它可以用在等項(xiàng)目中但演變至今基本與配合使用作用集中式管理應(yīng)用中多個(gè)組件共享的狀態(tài)如果不是比較復(fù)雜的組件間通信的情況下建議還是不使用因?yàn)闀?huì)造成代碼量的上升和復(fù)雜關(guān)鍵模塊保存狀態(tài)的主要部分共享的狀態(tài)

簡(jiǎn)介

1) redux是一個(gè)獨(dú)立專門用于做狀態(tài)管理的JS庫(不是react插件庫)
2) 它可以用在react, angular, vue等項(xiàng)目中, 但演變至今基本與react配合使用
3) 作用: 集中式管理react應(yīng)用中多個(gè)組件共享的狀態(tài)

Tip:redux如果不是比較復(fù)雜的組件間通信的情況下,建議還是不使用,因?yàn)闀?huì)造成代碼量的上升和復(fù)雜

關(guān)鍵模塊

Store

保存狀態(tài)的主要部分,共享的狀態(tài)數(shù)據(jù)保存在該對(duì)象中

Action Creators

工廠函數(shù),主要用來生成action對(duì)象,傳輸更新的狀態(tài)數(shù)據(jù).

Reducers

接收action對(duì)象,對(duì)之前的狀態(tài)和action中的新狀態(tài)進(jìn)行操作,并且返回新的結(jié)果存在store中.

關(guān)鍵函數(shù)

store.createStore()

創(chuàng)建store對(duì)象,參數(shù)傳入reducers進(jìn)行綁定.

store.dispatch()

分發(fā)action對(duì)象,傳入reducers,進(jìn)行狀態(tài)的更新.

store.subscribe()

監(jiān)聽事件,當(dāng)有狀態(tài)改變時(shí),會(huì)自動(dòng)調(diào)用監(jiān)聽的方法(一般用來重新渲染方法)

使用示例 1.下載安裝
//此處我使用的是yarn,后面兩個(gè)后面介紹
yarn add redux  react-redux  redux-thunk
2.創(chuàng)建文件目錄

3.各部分內(nèi)容

store.js

import { createStore,applyMiddleware } from "redux"
import reducer from "./reducer"   //導(dǎo)入reducer進(jìn)行綁定
import thunk from "redux-thunk"    //這是一個(gè)異步解析實(shí)現(xiàn)

export default createStore(reducer,applyMiddleware(thunk)); // 導(dǎo)出store對(duì)象

action-creator.js

import { INCREASE, DECREASE } from "./action-type"  //全局命名聲明文件

// 不同的操作,返回action對(duì)象,type為標(biāo)識(shí),data為傳輸?shù)臄?shù)據(jù)
export const incresement = (data) => ({ type:INCREASE,data:data})  

export const decresement = (data) =>({type:DECREASE,data:data})

//模擬異步操作,返回的是主動(dòng)進(jìn)行分發(fā)操作的一個(gè)函數(shù)
export const incresementAsync = (data) => {
    return (dispatch) => {
      setTimeout(()=>{
        dispatch(incresement(data))
      },1000)
    }
    
}

reducer.js

import {INCREASE,DECREASE} from "./action-type"

//當(dāng)有dispatch被調(diào)用時(shí),會(huì)自動(dòng)來遍歷該模塊中的所有函數(shù),并進(jìn)行匹配.
//previousState為之前的狀態(tài),action中包含著新的數(shù)據(jù)
export default function number(previousState = 0,action) {
    switch(action.type){
        case INCREASE:
        return previousState + action.data;
        case DECREASE:
        return previousState - action.data;
        default:
        return previousState;
    }
}

action-type.js

//聲明定義了一些命名
export const INCREASE = "INCREASE";

export const DECREASE = "DECREASE";

App.js

import React, { Component } from "react"
import { connect } from "react-redux"
import { incresement, decresement,incresementAsync } from "./redux/action-creator"
class App extends Component {

// 進(jìn)行更新操作
  increase = () => {
    this.props.incresement(1)
  }

  decrease = () => {
    this.props.decresement(1)
  }

  increaseAsync = () => {
    this.props.incresementAsync(1)
  }

  render() {
    return (
      
//獲取狀態(tài)值

click {this.props.number} times

) } } //關(guān)鍵在這里,這是簡(jiǎn)寫的方式. //得益于react-redux,將創(chuàng)建action對(duì)象和dispatch的操作都進(jìn)行了封裝簡(jiǎn)化,并且封裝了獲取狀態(tài)值. //不管是進(jìn)行獲取還是更新操作,都封裝進(jìn)了props屬性中. export default connect( (state) => ({ number: state }), { incresement, decresement,incresementAsync } )(App)

index.js

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

// 用Provider包裝,就省略了用subscribe()監(jiān)聽的回調(diào).
ReactDOM.render(, document.getElementById("root"));
react-redux

專門用來簡(jiǎn)化redux在react中使用的一個(gè)庫.
它將原生redux的.getState(),創(chuàng)建action對(duì)象,dispatch等方法進(jìn)行了封裝.提供如上代碼的簡(jiǎn)寫方式.

redux-thunk

用來幫助解析異步操作.
只需要在創(chuàng)建store對(duì)象的時(shí)候用中間件包裝的方式作為第二個(gè)參數(shù)傳入即可.

擴(kuò)展調(diào)試工具

redux-devtools-extension.

在谷歌商店中裝好這個(gè)插件,然后在創(chuàng)建store對(duì)象的時(shí)候

import { createStore, applyMiddleware } from "redux";
import { composeWithDevTools } from "redux-devtools-extension";

const store = createStore(reducer, composeWithDevTools(
  applyMiddleware(...middleware),
  // other store enhancers if any
));
總結(jié)

redux在復(fù)雜項(xiàng)目中比較適合使用.它保存著一些多處需要共享的狀態(tài)數(shù)據(jù),在整個(gè)項(xiàng)目中比較方便進(jìn)行狀態(tài)數(shù)據(jù)的更新以及獲取.

避免了一些層級(jí)比較多或者跨越了比較多級(jí)的同級(jí)兄弟組件需要互相通信的復(fù)雜過程.

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/103668.html

相關(guān)文章

  • react 前端項(xiàng)目技術(shù)選型、開發(fā)工具、周邊生態(tài)

    摘要:更多參考通過庫掌握函數(shù)組件有些時(shí)候,我們想要?jiǎng)討B(tài)的加載一些組件按需加載,比如在一個(gè)單頁面應(yīng)用中頁面的組件頁面的組件頁面的組件只有真正要實(shí)例化當(dāng)前頁面的時(shí)候,才會(huì)去加載相應(yīng)的組件。 react 前端項(xiàng)目技術(shù)選型、開發(fā)工具、周邊生態(tài) 聲明:這不是一篇介紹 React 基礎(chǔ)知識(shí)的文章,需要熟悉 React 相關(guān)知識(shí) 主架構(gòu):react, react-router, redux, redux...

    hersion 評(píng)論0 收藏0
  • react 前端項(xiàng)目技術(shù)選型、開發(fā)工具、周邊生態(tài)

    摘要:更多參考通過庫掌握函數(shù)組件有些時(shí)候,我們想要?jiǎng)討B(tài)的加載一些組件按需加載,比如在一個(gè)單頁面應(yīng)用中頁面的組件頁面的組件頁面的組件只有真正要實(shí)例化當(dāng)前頁面的時(shí)候,才會(huì)去加載相應(yīng)的組件。 react 前端項(xiàng)目技術(shù)選型、開發(fā)工具、周邊生態(tài) 聲明:這不是一篇介紹 React 基礎(chǔ)知識(shí)的文章,需要熟悉 React 相關(guān)知識(shí) 主架構(gòu):react, react-router, redux, redux...

    kidsamong 評(píng)論0 收藏0
  • React手稿之 React-Redux

    摘要:屬性是必須的。需要一個(gè)與的一致。必須在的返回原。調(diào)試插件日志安裝組件。然后加入到中即可例如擴(kuò)展程序需要在應(yīng)用市場(chǎng)安裝然后在中使用增強(qiáng)功能將加入即可在線實(shí)例推薦閱讀手稿 React-Redux Redux Action function addTodo(text) { return { type: ADD_TODO, text } } type 屬性是必須的。...

    Freelander 評(píng)論0 收藏0
  • react-redux

    摘要:主要用于構(gòu)建,被認(rèn)為是中的視圖。高效通過對(duì)的模擬,最大限度地減少與的交互。也就是說,用戶負(fù)責(zé)視覺層,狀態(tài)管理則是全部交給它。該回調(diào)函數(shù)必須返回一個(gè)純對(duì)象,這個(gè)對(duì)象會(huì)與組件的合并。 React 定義: React 是一個(gè)用于構(gòu)建用戶界面的 JAVASCRIPT 庫。React主要用于構(gòu)建UI,React 被認(rèn)為是 MVC 中的 V(視圖)。 特點(diǎn): 聲明式設(shè)計(jì) ?React采用聲明范式...

    sanyang 評(píng)論0 收藏0
  • react開發(fā)教程(十)redux結(jié)合react

    摘要:描述和之間沒有關(guān)系。但是還是比較適合和搭配的,因?yàn)樵试S你以的形式來描述界面,而非常擅長控制的變化。應(yīng)用中應(yīng)有且僅有一個(gè)。只需要在渲染根組件時(shí)使用即可。創(chuàng)建上一篇開發(fā)教程九基礎(chǔ) 描述 Redux 和 React 之間沒有關(guān)系。Redux 可以搭配 React、Angular 甚至純 JS。但是 Redux 還是比較適合和 React 搭配的,因?yàn)?React 允許你以 state 的形式...

    jsliang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<