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

溫馨提示×

溫馨提示×

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

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

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

    吉安县| 象山县| 新乡市| 灌南县| 同德县| 会昌县| 荆门市| 垣曲县| 上饶市| 肥西县| 长宁区| 高唐县| 凤台县| 高邑县| 周至县| 开封县| 新沂市| 丰原市| 孟州市| 高清| 邻水| 无为县| 兰坪| 来宾市| 文登市| 临夏县| 湘乡市| 西安市| 林口县| 泸溪县| 石嘴山市| 苏尼特右旗| 十堰市| 静宁县| 塔城市| 桐柏县| 青神县| 黔西| 镇坪县| 沙湾县| 陕西省|