vuex與redux的使用

2021-10-07 18:08:50 字數 2138 閱讀 1216

state:儲存資料

mutations:修改state資料的同步方法

actions:非同步方法,請求之類的

modules:掛載別的倉庫

vue例項中使用this.$store.xx來使用資料,呼叫action中的方法需要

this.$store.dispatch('方法名',)
進行分發,需要呼叫mutations中的方法需要

this.$store.commit('方法名',)
進行提交

vuex也有輔助函式

import  from 'vuex'
然後state的資料可以在計算屬性中獲取,然後直接this.資料進行使用

computed:
方法在methods中展開獲取

...mapmutations(['方法名'])
~~

1.新建乙個store,類似管理員

import reducer from './reducers'

const store=createstore( reducer,);

export default store;

2.新建乙個資料倉儲reducers.js,丟擲的是乙個純函式,並在store中引入

import  from './actiontypes';

const defaultstate = {}

export default (state = defaultstate, action) =>

return state;

}

3.在入口函式中引入

import  from 'react-redux'

import store from './store'

並在根元件上使用provider ,使包裹的元件都可以使用store的資料 )

4.給需要用到store資料的元件進行連線store,引入

import  from 'react-redux'
並且在丟擲的時候改為連線的方式,mapstatetoprops為獲取的store中的資料,mapdispatchtoprops修改store中的資料的方法

export default connect(mapstatetoprops,mapdispatchtoprops)(todolist);
例如:實現實時修改input中的資料

(1)繫結資料,並繫結onchange方法

並在mapstatetoprops中獲取

const mapstatetoprops=(state)=>

}

2.onchange的方法寫在mapdispatchtoprops中,需要建立乙個action來告訴store將要進行什麼操作,步驟如下:

2.1.新建乙個actiontypes.js用來宣告action的型別,之所以專門用乙個js檔案來宣告,是防止因為常量的拼寫錯誤而導致的找不到錯誤,具體要宣告多少個,根據自己的需求來決定

export const change_input_value='change_input_value';
2.2.新建乙個actioncreator.js用來專門存放action.方便管理,action只能返回乙個物件,如果有引入redux-thunk就可以返回乙個函式,一般使用者傳送ajax請求

import  from './actiontypes';

export const getinputvaluechangeaction = (value) => ()

2.3這樣就是實現了利用rudex完成資料更新

const mapdispatchtoprops=(dispatch)=>

}}

vuex 與 redux 的 區別

一 redux和flux的區別 1 redux是flux中的乙個實現 2 在redux中我們只能定義乙個store,在flux中我們可以定義多個 3 在redux中,store和dispatch都放到了store,結構更加清晰 4 在redux中本身就內建state物件,對倉庫的管理更加明確 二 r...

自己對vuex 和 redux的理解

1.毫無以疑問都是用了設計模式中的 觀察者模式 或者說 發布 訂閱模式 2.發布訂閱模式 需要有 事件物件event 事件物件有 listen 訂閱 trigger 發布訊息 remove 取消訂閱 等屬性 3.在vuex中,vue.store 相當於event物件,store.commit 相當於...

vuex的學習與使用

vue中有父子元件之間的通訊,但某些變數需要在全域性使用,那就用到了vuex,vuex 是乙個專為 vue.js 應用程式開發的狀態管理模式。建立乙個vue3專案,具體如下vue cli3的建立 記得在選配置的時候選上vuex 專案建立成功後,得到的專案目錄如下 其中的store.js就是用來設定v...