91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vuex5中的Pinia插件怎么使用

發布時間:2022-07-22 10:11:33 來源:億速云 閱讀:175 作者:iii 欄目:開發技術

這篇文章主要介紹“vuex5中的Pinia插件怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“vuex5中的Pinia插件怎么使用”文章能幫助大家解決問題。

vuex5 Pinia插件機制

通過插件擴展

  • .給每個store添加公共屬性

  • .給stores添加新的配置

  • .給stores添加新的方法

  • .包裹重用已有方法

  • .改變或者取消actions

  • .應用額外的副作用像localstorage

  • .應用給指定的store

1、使用

import { createPinia } from 'pinia'
const pinia = createPinia()

(1)定義插件

function SecretPiniaPlugin(context) {
context.pinia;  pina實例`createPinia()`
context.app;  vue實例`createApp()`
context.store;   正在配置的store
context.options;  store的配置`defineStore()`
  • (1)設置響應式數據

每個store都是reactive包裹的對象,所以使用起來可直接解套ref

context.store.hello = ref('secret');
context.store.hello;
  • (2)state添加數據

const globalSecret = ref('secret')

可直接添加

store.secret = globalSecret

通過$state,可獲得devtools追蹤、ssr中進行序列化

store.$state.secret = globalSecret

添加第三方數據,不要求響應式時,需要使用markRow進行轉換

store.router = markRaw(router)
  • (3)添加監聽器

  store.$subscribe(() => {
  store改變時觸發
  })
  store.$onAction(() => {
     action觸發時觸發
  })
...
}

(2)應用插件

pinia.use(SecretPiniaPlugin)

(3)devTools能追蹤修改

方式一:返回修改的操作

pinia.use(({ store }) => ({
  store.hello = 'world'
}))

方式二:顯示添加

pinia.use(({ store }) => {
  store.hello = 'world'
  if (process.env.NODE_ENV === 'development') {
    store._customProperties.add('hello')
  }
})

2、應用

(1)給每個store添加公共state

function SecretPiniaPlugin() {
  return { secret: 'the cake is a lie' }
}
pinia.use(SecretPiniaPlugin)

(2)改寫store中的action

.此例為改寫成防抖action

defineStore('search', {
  actions: {
    searchContacts() {
    },
  },
  debounce: {
    searchContacts: 300,
  },
})

對于函數寫法的store,自定義選項放入第三個參數中

defineStore(
  'search',
  () => {
    ...
  },
  {
    // this will be read by a plugin later on
    debounce: {
      // debounce the action searchContacts by 300ms
      searchContacts: 300,
    },
  }
)

插件中: 

import debounce from 'lodash/debunce'
pinia.use(({ options, store }) => {
  if (options.debounce) {
  
    將設置了debounce的store中的原action改寫成具有防抖功能的action
    
    return Object.keys(options.debounce).reduce((debouncedActions, action) => {
      debouncedActions[action] = debounce(
        store[action],
        options.debounce[action]
      )
      return debouncedActions
    }, {})
  }
})

pinia和vuex的區別

(1)它沒有mutation,他只有state,getters,action【同步、異步】使用他來修改state數據

(2)他默認也是存入內存中,如果需要使用本地存儲,在配置上比vuex麻煩一點

(3)語法上比vuex更容易理解和使用,靈活。

(4)pinia沒有modules配置,沒一個獨立的倉庫都是definStore生成出來的

(5)state是一個對象返回一個對象和組件的data是一樣的語法

vuex5中的Pinia插件怎么使用

vuex5中的Pinia插件怎么使用

 需要在頁面組件中引入我們要修改數據

vuex5中的Pinia插件怎么使用

vuex5中的Pinia插件怎么使用

vuex5中的Pinia插件怎么使用

安裝的本地存儲插件可以是npm也可以是year

vuex5中的Pinia插件怎么使用

關于“vuex5中的Pinia插件怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

中西区| 镇原县| 响水县| 巴塘县| 固原市| 方山县| 乌审旗| 长宁区| 黔南| 八宿县| 南澳县| 简阳市| 开封县| 山东省| 卓尼县| 灵宝市| 绍兴县| 昌宁县| 土默特左旗| 呼和浩特市| 师宗县| 介休市| 奉新县| 潮州市| 班戈县| 江川县| 甘孜县| 德庆县| 都江堰市| 囊谦县| 湟中县| 靖西县| 新宁县| 凌云县| 曲阜市| 武强县| 河间市| 昌宁县| 绩溪县| 新巴尔虎右旗| 兖州市|