<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在使用redux之前,首先了解一下redux到底是什麼?
用過vue的肯定知道vuex,vuex是vue中全域性狀態管理工具,主要是用於解決各個元件和頁面之間資料共用問題,對資料採用集中式管理,而且可以通過外掛實現資料持久化
redux跟vuex類似,最主要的就是用作狀態的管理,redux用一個單獨的常數狀態state來儲存整個應用的狀態,可以把它想象成資料庫,用來儲存專案應用中的公共資料
Redux最主要是用作應用狀態的管理。簡言之,Redux用一個單獨的常數狀態樹(state物件)儲存這一整個應用的 狀態,這個物件不能直接被改變。當一些資料變化了,一個新的物件就會被建立(使用actions和reducers),這 樣就可以進行資料追蹤,實現時光旅行。
在使用redux之前,我們首先要安裝redux,通過下面命令進行安裝
npm i redux --save
安裝好可以在根目錄package.json檔案檢查是否安裝成功
接下來開始設定redux,首先在src目錄下建立一個store資料夾,用來存放redux資料
接著在store新建一個js檔案index.js,在index.js中設定redux內容
在index.js中匯入createStore方法,建立redux資料的方法
store/index.js
//1. 匯入createStore方法 import { createStore } from "redux"; //2. 建立一個reducer純函數的方法, state初始化資料, actions修改資料行為 const reducer = function (state, actions) { //定義初始化的資料 if (!state) { state = { count: 10, } } //定義actions的邏輯程式碼區域,處理邏輯的資訊 switch (actions.type) { //呼叫執行+1的邏輯 case "PLUS": return { ...state, count: state.count + actions.payload, } break; case "JIAN": return { ...state, count:state.count-actions.payload } break; default: return { ...state } } } //建立store的物件 const store = createStore(reducer); //丟擲store的物件值 export { store };
獲取redux中的資料,通過store.getState()
修改資料使用dispatch
dispatch({type:"型別",payload:額外的引數})
home.js
import React, { useEffect, useState } from 'react'; import { store } from './index'; export default function Home(props) { const [counts,setCounts]=useState(store.getState().count) useEffect(()=>{ let unsubscribe=store.subscribe(()=>{ let {count}=store.getState() console.log(count); setCounts(count) }) return()=>{ unsubscribe() } },[]) return ( <div> <h3>{counts}</h3> <button onClick={()=>store.dispatch({type:'PLUS',payload:2})}>count++</button> <button onClick={()=>store.dispatch({type:'JIAN',payload:2})}>count--</button> </div> ) }
直接呼叫方法頁面資料不發生變化,我們使用useEffect和subscribe對資料進行監聽,監聽頁面資料的重新整理和更改
到此這篇關於React Redux使用設定詳解的文章就介紹到這了,更多相關React Redux 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45