Vue項目中是否使用store原理深究
前言
關于 Vue 項目中是否使用 store 的一些思考?
為什么會有這個問題呢?
最近做項目的時候,使用 pinia 作為狀態(tài)管理庫,翻看 pinia 文檔的時候,發(fā)現(xiàn) pinia 創(chuàng)建 store 多了一種 setup store 的方式
setup store
const useStore = defineStore('store', () => {
const status = ref(false);
const setStatus = () => {
status.value = !status.value;
};
const number = computed(() => Number(status.value));
return {
status,
setStatus,
number,
};
});
setup store 與 vue 的 響應式 api 結合在一起使用,相較于原先的 選項式 api 統(tǒng)一了語法,更符合開發(fā)者習慣
使用 store:
const store = useStore() console.log(store.status); // false console.log(store.number); // 0 store.setStatus(); console.log(store.status); // true console.log(store.number); // 1
這樣的寫法很棒!
但是我們?yōu)槭裁匆啻我慌e使用 store,為何不在其他文件直接使用 組合式 api 定義數(shù)據(jù)和修改數(shù)據(jù)的方法,非要包裹一層創(chuàng)建 store 的過程
const status = ref(false);
const setStatus = () => {
status.value = !status.value;
};
export { status, setStatus };
在其他的組件中直接將 status 和 setStatus 引入,這樣寫法比 setup store 還要簡單
那使用 store 的意義是什么呢 ?
兩種方式的區(qū)別
為什么要引入 store,大多數(shù)情況都是為了 全局狀態(tài)管理,方便了 跨組件通信,但是直接使用 組合式 api 也能完成這個任務。
這兩種方式有什么區(qū)別呢?
如果引入其他文件中定義的 簡單數(shù)據(jù)類型 是 不允許修改 的
// 第一個文件
export let num = 0;
// 第二個文件
import { num } from '.';
num++; // error
import 為當前模塊引入的變量都會被視作為 常量
setup store 相比 組合式 api 擁有更強大的地方:
const useStore = defineStore('store', () => {
const num1 = ref(0);
const num2 = 0; // 非響應式
return {
num1,
num2,
};
});
const store = useStore();
store.num1++;
store.num2++; // 響應式
console.log(store.num1); // 1
console.log(store.num2); // 1
基本數(shù)據(jù)類型和響應式數(shù)據(jù)都可以更改,基本數(shù)據(jù)可以修改,也可以引起視圖的變化,在 store 外部調用是響應式的,但在 store 內部不是響應式的,但是不會被 pinia Devtools 工具檢測到

這是兩種方式在使用體驗上面的區(qū)別
store 究竟帶來了什么?
在 Pinia 官網 中有這么一段話

在很多時候,其實是體驗不到 pinia 帶來的好處,所以可以完全使用 組合式 api 作為全局狀態(tài)管理的工具
以上就是Vue項目中是否使用store原理深究的詳細內容,更多關于Vue項目store使用原理的資料請關注腳本之家其它相關文章!
相關文章
vue常用指令實現(xiàn)學生錄入系統(tǒng)的實戰(zhàn)
本文主要介紹了vue常用指令實現(xiàn)學生錄入系統(tǒng)的實戰(zhàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
Vue + iView實現(xiàn)Excel上傳功能的完整代碼
前一段時間項目經歷了前端上傳文件的過程,首先進入頁面會展示默認的樣子,選中要上傳的excel文件,本文通過實例圖文相結合給大家介紹的非常詳細,需要的朋友參考下吧2021-06-06

