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

redux的原理、工作流程及其應(yīng)用方式

 更新時間:2023年07月04日 14:36:43   作者:小王日記a  
這篇文章主要介紹了redux的原理、工作流程及其應(yīng)用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

redux原理、工作流程及其使用

  • Redux對于JavaScript應(yīng)用而言是一個可預(yù)測狀態(tài)的容器。
  • 換言之,它是一個應(yīng)用數(shù)據(jù)流框架,而不是傳統(tǒng)的像underscore.js或者AngularJs那樣的庫或者框架。

1、什么是redux?

redux是專門用于集中式管理狀態(tài)的javascript庫,他并不是react的插件庫。

比如你有多個組件A-E都想要用同一個組件D中的狀態(tài):

1)像以前我們可以通過父子組件通信的方式讓父組件進行傳遞狀態(tài),或者是讓兄弟組件之間通過訂閱發(fā)布進行通信

2)當我們使用了redux就可以直接通過讓redux進行統(tǒng)一的狀態(tài)管理,誰想要用狀態(tài)就自己去拿,省去了第一種方法的層層傳遞

請?zhí)砑訄D片描述

2、redux的工作流程

在我們了解redux的工作流程之前我們應(yīng)該要知道redux有三個核心概念,分別為actions、store、reducers(帶s的表明可能存在多個)

1)actions

actions英文直譯過來就是行動、動作的意思,那么我們就可以猜到他表示的是“怎么做”,簡單來說actions就是一個對象,actions里面有兩個屬性分別為typedata

  • type:標識屬性,值為字符串且唯一,必要屬性(你想要做什么事情
  • data:數(shù)據(jù)屬性,值為任意類型,可選屬性(你要做事情的數(shù)據(jù)

那我們淺淺舉個栗子:

比如計算器你可以進行加1減2等操作,那么加減乘除這個操作就是你的type,數(shù)字就是你的數(shù)據(jù)

2)store

store有且只能有一個,他相當于一個最高指揮家,他負責把action動作交給對應(yīng)的reducer進行執(zhí)行,也就是說將state、action和reducer聯(lián)系在一起的對象。

3)reducer

reducer用于將store發(fā)過來的action完成并將結(jié)果返回給store,他接收兩個參數(shù)preState(舊狀態(tài))和action(動作)并返回一個newState(新狀態(tài))。

比如像計算器我們需要在原來的數(shù)據(jù)上進行加1的操作,那么舊狀態(tài)舊對應(yīng)原來的數(shù)據(jù),action對應(yīng)加1的操作,返回的新狀態(tài)就是計算器加完之后重新返回的結(jié)果。

那么他的工作流程是什么樣的呢?

在這里插入圖片描述

1)首先我們要確定我們要做什么

2)讓Action Creators創(chuàng)建action(也就是你要做的事情)

3)通過dispatch將action分發(fā)出去

4)store對要使用的reducer進行綁定,然后將action分發(fā)到對應(yīng)的reducer上

5)在reducer上進行相應(yīng)的action操作并返回結(jié)果給store

6)組件就可以通過store的API像store進行獲取操作返回的結(jié)果

3、redux的舉例說明

接下來我們會使用一個計算器的案例幫助大家更好的理解redux

1)Count組件

import store from '../../redux/store'
import { creatAdd, creatJian } from '../../redux/count_action'
export default class Count extends Component {
  ///相加
  addCount = () => {
    const { value } = this.selectValue///獲取當前選擇的值
    store.dispatch(creatAdd(value * 1))
  }
  //相減
  lessCount = () => {
    const { value } = this.selectValue
    store.dispatch(creatJian(value * 1))
  }
  render () {
    return (
      <div>
        <h2>當前計算器的值為:{store.getState()}</h2>
        <select ref={c => this.selectValue = c}>
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
        </select>
        <button onClick={this.addCount}>相加</button>&nbsp;
        <button onClick={this.lessCount}>相減</button>&nbsp;
      </div>
    )
  }
}

2)創(chuàng)建action

import { ADDCOUNT, CREATJIAN } from '../redux/constant'
export const creatAdd = data => ({ type: ADDCOUNT, data })
export const creatJian = data => ({ type: CREATJIAN, data })

3)store組件

import { legacy_createStore } from 'redux'
import countReducer from './count_reducer'
///將reducer和store聯(lián)系起來
export default legacy_createStore(countReducer)

4)reducer組件

import { ADDCOUNT, CREATJIAN } from './constant'
const inin = 0
export default function countReducer (pre = inin, action) {
  ///從action解析出type和data
  const { type, data } = action
  ///通過類型進行匹配,判斷怎么做
  switch (type) {
    case ADDCOUNT:
      return pre + data
    case CREATJIAN:
      return pre - data
    default:
      return pre
  }
}

5)contant常量

為防止出現(xiàn)拼寫錯誤
export const ADDCOUNT = 'addCount'
export const CREATJIAN = 'lessCount'

6)當檢測到redux中的狀態(tài)發(fā)生變化時要進行更新渲染

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <App />
);
///在入口文件進行更新渲染
store.subscribe(() => {
  root.render(
    <App />
  )
})

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • ForwardRef?useImperativeHandle方法demo

    ForwardRef?useImperativeHandle方法demo

    這篇文章主要為大家介紹了ForwardRef?useImperativeHandle方法demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 30分鐘精通React今年最勁爆的新特性——React Hooks

    30分鐘精通React今年最勁爆的新特性——React Hooks

    這篇文章主要介紹了30分鐘精通React今年最勁爆的新特性——React Hooks,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • ReactJs實現(xiàn)樹形結(jié)構(gòu)的數(shù)據(jù)顯示的組件的示例

    ReactJs實現(xiàn)樹形結(jié)構(gòu)的數(shù)據(jù)顯示的組件的示例

    本篇文章主要介紹了ReactJs實現(xiàn)樹形結(jié)構(gòu)的數(shù)據(jù)顯示的組件的示例,非常具有實用價值,需要的朋友可以參考下
    2017-08-08
  • react?hooks?計數(shù)器實現(xiàn)代碼

    react?hooks?計數(shù)器實現(xiàn)代碼

    這篇文章主要介紹了react?hooks計數(shù)器實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • react native 獲取地理位置的方法示例

    react native 獲取地理位置的方法示例

    這篇文章主要介紹了react native 獲取地理位置的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • react學(xué)習(xí)筆記之state以及setState的使用

    react學(xué)習(xí)筆記之state以及setState的使用

    這篇文章主要介紹了react學(xué)習(xí)筆記之state以及setState的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • React Class組件生命周期及執(zhí)行順序

    React Class組件生命周期及執(zhí)行順序

    這篇文章主要介紹了React Class組件生命周期,包括react組件的兩種定義方式和class組件不同階段生命周期函數(shù)執(zhí)行順序,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2021-08-08
  • React?中使用?Redux?的?4?種寫法小結(jié)

    React?中使用?Redux?的?4?種寫法小結(jié)

    這篇文章主要介紹了在?React?中使用?Redux?的?4?種寫法,Redux 一般來說并不是必須的,只有在項目比較復(fù)雜的時候,比如多個分散在不同地方的組件使用同一個狀態(tài),本文就React使用?Redux的相關(guān)知識給大家介紹的非常詳細,需要的朋友參考下吧
    2022-06-06
  • React?Fiber原理深入分析

    React?Fiber原理深入分析

    Fiber可以理解為一個執(zhí)行單元,每次執(zhí)行完一個執(zhí)行單元,React?Fiber就會檢查還剩多少時間,如果沒有時間則將控制權(quán)讓出去,然后由瀏覽器執(zhí)行渲染操作,這篇文章主要介紹了React?Fiber架構(gòu)原理剖析,需要的朋友可以參考下<BR>
    2023-01-01
  • React組件性能提升實現(xiàn)方法詳解

    React組件性能提升實現(xiàn)方法詳解

    這篇文章主要介紹了React組件性能最佳優(yōu)化實踐分享,React組件性能優(yōu)化的核心是減少渲染真實DOM節(jié)點的頻率,減少Virtual?DOM比對的頻率,更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2023-03-03

最新評論

沽源县| 普格县| 宜都市| 运城市| 关岭| 沙洋县| 天祝| 稷山县| 榆树市| 大余县| 淄博市| 新和县| 北碚区| 重庆市| 清水河县| 云南省| 陆良县| 茂名市| 桃源县| 安化县| 尚志市| 台南县| 灵台县| 遂宁市| 宜宾市| 凌云县| 明水县| 时尚| 阳谷县| 东港市| 巴中市| 修文县| 五原县| 荆门市| 河东区| 濮阳县| 鄂伦春自治旗| 建阳市| 贡觉县| 南雄市| 石泉县|