欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pinia中action使用方法詳解

 更新時間:2023年04月03日 08:50:40   作者:大鯉余  
Pinia是Vue的存儲庫,它允許您跨組件/頁面共享狀態(tài),下面這篇文章主要給大家介紹了Pinia中action使用方法的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下

actions的使用

動作相當(dāng)于組件中的方法。它們可以使用actionsin 屬性進(jìn)行定義。

并且在pinia中的action既可以有同步函數(shù)也可以有異步函數(shù)。

在actions中可以通過this訪問該倉庫所有實例

export const useUsers = defineStore('users',{
	state:()=>{
		userData:null
	},
	actions:{
		async registerUser(login,password){
			...
			this.userData = 1
		}
	}
})

在setup中可以直接使用actions中的函數(shù),pinia會自動推斷

<script setup>
	import { useUsers } from '...'
	const store = useUsers()
	store.registerUser()//可以直接調(diào)用

</script>

訂閱$onAction

訂閱操作默認(rèn)情況下綁定到添加他的組件。這就意味著當(dāng)組件卸載,訂閱會自動被刪除,但如果第二個參數(shù)傳遞為true則會將該訂閱與組件分離。(即組件卸載該訂閱依然存在)

$onAction的基本使用

//新建一個測試倉庫
import { defineStore } from 'pinia'
export const testStore = defineStore('test', {
    state() {
        return {
            count:1
        }
    },
    actions: {
        testOnAction(id) {
            this.count++
            console.log(this.count)
            return Promise.resolve('這是testOnAction返回的值')
        },
        testOnAction2(...args) {
            console.log(...args)
            return Promise.reject('這是testOnAction222錯誤返回的值')
        }

    }
})
//在setup的語法糖里
import { testStore } from '../../pinia/modules/test'
const myTestStore = testStore()

store.$onAction(({
  name,
  store,
  args,
  after,
  onError
})=>{
	if(name==='testOnAction'){
		after((reject)=>{
			//這里可以執(zhí)行一些操作
		})
	}
	//onError鉤子類似一個錯誤級中間件,當(dāng)函數(shù)拋出promise的失敗狀態(tài)就會調(diào)用
  onError((error)=>{
    console.log(error)
  })
})
store.testOnAction(1)
store.testOnAction2(1,2,3,45)

詳解$onAction中的參數(shù)

({ name,store, args,after, onError })

$onAction函數(shù)接受一個回調(diào)函數(shù),該回調(diào)函數(shù)內(nèi)部的代碼會先于actions函數(shù)調(diào)用前執(zhí)行,以下是$onAction中回調(diào)函數(shù)的參數(shù)介紹。

name當(dāng)該倉庫中的某個actions函數(shù)被調(diào)用,name是被調(diào)用函數(shù)的名字。

store是當(dāng)前倉庫實例,就是myTestStore

args是actions中某個被調(diào)用函數(shù)接受的實參,是個數(shù)組類型

after是個鉤子函數(shù),內(nèi)部接受要給回調(diào)函數(shù),該回調(diào)函數(shù)接受一個參數(shù)result,當(dāng)actions中的函數(shù)返回了一個promise成功的返回值,result可以接受到,如果actions里的函數(shù)沒有返回值則result則為undefined。after鉤子函數(shù)會在actions中的函數(shù)被調(diào)用后執(zhí)行

onError是個鉤子函數(shù),如果做過服務(wù)端的小伙伴肯定知道錯誤級中間件,onError同樣接受一個回調(diào)函數(shù),該回調(diào)函數(shù)接受一個error參數(shù),該參數(shù)是actions內(nèi)部函數(shù)中返回promise失敗傳的參數(shù)。如果actions內(nèi)部函數(shù)返回了promise失敗狀態(tài)onError就會執(zhí)行

總結(jié)

以上就是$onAction函數(shù),對于$函數(shù)就相當(dāng)于一個監(jiān)聽器,功能類似與watch當(dāng)actions內(nèi)部函數(shù)被調(diào)用就會觸發(fā)。我們可以在某個函數(shù)調(diào)用前做一些操作,調(diào)用后執(zhí)行某些操作,以及函數(shù)中拋出的錯誤進(jìn)行操作。

到此這篇關(guān)于Pinia中action使用方法的文章就介紹到這了,更多相關(guān)Pinia中action使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue 如何實現(xiàn)表單校驗

    vue 如何實現(xiàn)表單校驗

    這篇文章主要介紹的是vue 如何實現(xiàn)表單校驗的方法,又代碼詳細(xì)解說,感興趣的小伙伴可以參考下面文章的具體內(nèi)容
    2021-09-09
  • Vue微信項目按需授權(quán)登錄策略實踐思路詳解

    Vue微信項目按需授權(quán)登錄策略實踐思路詳解

    這篇文章主要介紹了Vue微信項目按需授權(quán)登錄策略實踐思路詳解,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-05-05
  • vue實現(xiàn)學(xué)生錄入系統(tǒng)之添加刪除功能

    vue實現(xiàn)學(xué)生錄入系統(tǒng)之添加刪除功能

    本文給大家?guī)硪粋€小案例基于vue實現(xiàn)學(xué)生錄入系統(tǒng)功能,代碼簡單易懂非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-07-07
  • vue.js框架實現(xiàn)表單排序和分頁效果

    vue.js框架實現(xiàn)表單排序和分頁效果

    這篇文章主要為大家詳細(xì)介紹了vue.js框架實現(xiàn)表單排序和分頁效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • VUE中常用的四種高級方法總結(jié)

    VUE中常用的四種高級方法總結(jié)

    開發(fā)vue項目的時候一般都會開發(fā)很多自定義的全局組件,下面這篇文章主要給大家總結(jié)介紹了關(guān)于VUE中常用的四種高級方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • vue如何使用vant組件的field組件disabled修改默認(rèn)樣式

    vue如何使用vant組件的field組件disabled修改默認(rèn)樣式

    這篇文章主要介紹了vue如何使用vant組件的field組件disabled修改默認(rèn)樣式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue3中element-plus router的使用方式

    vue3中element-plus router的使用方式

    這篇文章主要介紹了vue3中element-plus router的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue+electron 自動更新的實現(xiàn)代碼

    vue+electron 自動更新的實現(xiàn)代碼

    這篇文章主要介紹了vue+electron 自動更新的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-02-02
  • vuex?設(shè)計思路和實現(xiàn)方式

    vuex?設(shè)計思路和實現(xiàn)方式

    這篇文章主要介紹了vuex?設(shè)計思路和實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 詳解Vue.js 作用域、slot用法(單個slot、具名slot)

    詳解Vue.js 作用域、slot用法(單個slot、具名slot)

    這篇文章主要介紹了Vue.js 作用域、slot用法(單個slot、具名slot),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10

最新評論