亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

JavaScript?Pinia代替Vuex的可行性實例分析

發布時間:2022-07-29 13:56:58 來源:億速云 閱讀:92 作者:iii 欄目:開發技術

這篇文章主要介紹了JavaScript Pinia代替Vuex的可行性實例分析的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇JavaScript Pinia代替Vuex的可行性實例分析文章都會有所收獲,下面我們一起來看看吧。

    一、介紹

    Vue 3.0 出來之前,數據存儲的主流依舊是 Vuex。但是,當 Vue 3.0 問世后,官方為了迎合 Componsition API,進而設計了全新的狀態管理 Pinia,而且未來的 Vuex 5 中提及的功能點正是 Pinia 目前已實現的。

    ! Vuex 5 提及的功能點:

    • 更好的兼容 Componsition AP

    • 更好的支持 TypeScript

    • 優化 modules 的嵌套結構

    • 支持熱加載,無需刷新頁面

    二、對比

    PiniaVuex 對比:

    1. Pinia 沒有 mutations,且 actions 支持同步/異步,Vuex 同步 mutations,異步 actions

    2. Pinia 相比 Vuex 擁有更好的 TypeScript 支持

    3. Pinia 不再需要 modules 的嵌套結構,獨立的 store,扁平化處理得以更好的代碼分割

    4. Pinia 支持熱加載,無需重載頁面,保持現有狀態

    5. PiniaVue 3 中支持緩存,而 Vuex 則不再支持

    6. Pinia 相比 Vuex 更加輕量化(體積約為 1K)

    7. Pinia 支持 $reset 方法,可以初始化 state

    8. Pinia 不支持 time-travel 功能,相對于 Vuex 調試功能還不成熟

    9. Pinia 同樣也支持 Vue 2.0

    三、使用

    1. 安裝

    npm i pinia@next -S

    2. 注冊

    index.js

    import { createApp } from 'vue'
    import element from 'element-plus'
    import '@/assets/css/index.css'
    import router from '@/router/index'
    import App from './App'
    import { createPinia } from 'pinia'
    const app = createApp(App)
    app.use(element).use(router).use(createPinia()).mount('#root')

    3. 創建單個 store

    store/user.js

    import { defineStore } from 'pinia'
    export const userStore = defineStore('user', {
      state: _ => {
        return {
          username: '張同學'
        }
      },
      getters: {
      },
      actions: {
        // 重置數據
        _reset() {
          this.$reset()
        }
      }
    })

    4. 組件內引用

    Home.vue

    <template>
      <div>
        姓名:{{ user_store.username }}
        <br />
        <el-button @click="change_username">修改名稱</el-button>
        <el-button @click="user_store._reset()">重置</el-button>
      </div>
    </template>
    <script>
    import { userStore } from '../store/user'
    export default {
      setup() {
        let user_store = userStore() // 初始化 user_store
        
        return { user_store }
      }
    }
    </script>

    5. 更新 store  數據的4種方式

    (1)直接修改特定的值
    let user_store = userStore()
    /**
     * @description 修改用戶名稱
     */
    let update = _ => {
      user_store.username = '張三'
    }
    (2)利用 $patch 批量修改
    let user_store = userStore()
    /**
     * @description 修改用戶名稱
     */
    let update = _ => {
      user_store.$patch({
      	username: '張三' 
      })
    }
    (3)利用 $patch 單個修改特定的值
    let user_store = userStore()
    /**
     * @description 修改用戶名稱
     */
    let update = _ => {
      user_store.$patch(state => {
        state.username = '張三'
      })
    }
    (4)利用 Actions 修改
    let user_store = userStore()
    /**
     * @description 修改用戶名稱
     */
    let update = _ => {
      user_store.update_username('張三')
    }
    // 修改用戶名稱
    update_username(value) {
      this.username = value
    }

    6. 其他

    從下面的截圖我看可以看到自身的一些屬性、方法等,諸如:$reset$patch 以及熱更新相關的方法

    JavaScript?Pinia代替Vuex的可行性實例分析

    關于“JavaScript Pinia代替Vuex的可行性實例分析”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“JavaScript Pinia代替Vuex的可行性實例分析”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

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

    AI

    阳原县| 斗六市| 涿鹿县| 正镶白旗| 饶平县| 巍山| 安多县| 安福县| 云龙县| 大荔县| 镇雄县| 韩城市| 金堂县| 阳东县| 古蔺县| 定远县| 蚌埠市| 深州市| 班玛县| 冷水江市| 通化县| 潮安县| 金山区| 长葛市| 贵南县| 海安县| 平乐县| 新竹县| 星子县| 寻乌县| 恩平市| 叶城县| 丘北县| 阜康市| 牟定县| 勐海县| 乐山市| 厦门市| 佛坪县| 靖安县| 石楼县|