最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue項(xiàng)目中是否使用store原理深究

 更新時(shí)間:2022年11月07日 09:37:21   作者:腹黑霸道城鄉(xiāng)結(jié)合部王鐵牛  
這篇文章主要為大家介紹了在Vue項(xiàng)目中是否使用store原理深究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

關(guān)于 Vue 項(xiàng)目中是否使用 store 的一些思考?

為什么會(huì)有這個(gè)問(wèn)題呢?

最近做項(xiàng)目的時(shí)候,使用 pinia 作為狀態(tài)管理庫(kù),翻看 pinia 文檔的時(shí)候,發(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 storevue響應(yīng)式 api 結(jié)合在一起使用,相較于原先的 選項(xiàng)式 api 統(tǒng)一了語(yǔ)法,更符合開(kāi)發(fā)者習(xí)慣

使用 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 的過(guò)程

const status = ref(false);
const setStatus = () => {
  status.value = !status.value;
};
export { status, setStatus };

在其他的組件中直接將 statussetStatus 引入,這樣寫法比 setup store 還要簡(jiǎn)單

那使用 store 的意義是什么呢 ?

兩種方式的區(qū)別

為什么要引入 store,大多數(shù)情況都是為了 全局狀態(tài)管理,方便了 跨組件通信,但是直接使用 組合式 api 也能完成這個(gè)任務(wù)。

這兩種方式有什么區(qū)別呢?

如果引入其他文件中定義的 簡(jiǎn)單數(shù)據(jù)類型不允許修改

// 第一個(gè)文件
export let num = 0;
// 第二個(gè)文件
import { num } from '.';
num++; // error

import 為當(dāng)前模塊引入的變量都會(huì)被視作為 常量

setup store 相比 組合式 api 擁有更強(qiáng)大的地方:

const useStore = defineStore('store', () => {
  const num1 = ref(0);
  const num2 = 0; // 非響應(yīng)式
  return {
    num1,
    num2,
  };
});
const store = useStore();
store.num1++;
store.num2++; // 響應(yīng)式
console.log(store.num1); // 1
console.log(store.num2); // 1

基本數(shù)據(jù)類型和響應(yīng)式數(shù)據(jù)都可以更改,基本數(shù)據(jù)可以修改,也可以引起視圖的變化,在 store 外部調(diào)用是響應(yīng)式的,但在 store 內(nèi)部不是響應(yīng)式的,但是不會(huì)被 pinia Devtools 工具檢測(cè)到

這是兩種方式在使用體驗(yàn)上面的區(qū)別

store 究竟帶來(lái)了什么?

Pinia 官網(wǎng) 中有這么一段話

在很多時(shí)候,其實(shí)是體驗(yàn)不到 pinia 帶來(lái)的好處,所以可以完全使用 組合式 api 作為全局狀態(tài)管理的工具

以上就是Vue項(xiàng)目中是否使用store原理深究的詳細(xì)內(nèi)容,更多關(guān)于Vue項(xiàng)目store使用原理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue移動(dòng)端下拉刷新組件的使用教程

    Vue移動(dòng)端下拉刷新組件的使用教程

    這篇文章主要介紹了Vue移動(dòng)端下拉刷新組件的使用教程,每一次我在使用vant組件庫(kù)里面list組件和下拉刷新連在一起用的時(shí)候都會(huì)出現(xiàn)下拉刷新和列表下滑局部滾動(dòng)的沖突,這就很難受,這篇文章將解決它
    2023-04-04
  • Vue3子組件向父組件傳值的兩種實(shí)現(xiàn)方式

    Vue3子組件向父組件傳值的兩種實(shí)現(xiàn)方式

    近期學(xué)習(xí)vue3的父子組件之間的傳值,發(fā)現(xiàn)跟vue2的并沒(méi)有太大的區(qū)別,這篇文章主要給大家介紹了關(guān)于Vue3子組件向父組件傳值的兩種實(shí)現(xiàn)方式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • vue常用指令實(shí)現(xiàn)學(xué)生錄入系統(tǒng)的實(shí)戰(zhàn)

    vue常用指令實(shí)現(xiàn)學(xué)生錄入系統(tǒng)的實(shí)戰(zhàn)

    本文主要介紹了vue常用指令實(shí)現(xiàn)學(xué)生錄入系統(tǒng)的實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Vue.js一個(gè)文件對(duì)應(yīng)一個(gè)組件實(shí)踐

    Vue.js一個(gè)文件對(duì)應(yīng)一個(gè)組件實(shí)踐

    Vue.js實(shí)現(xiàn)"一個(gè)文件對(duì)應(yīng)一個(gè)組件",無(wú)需webpack等工具,按需加載組件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • vue利用Moment插件格式化時(shí)間的實(shí)例代碼

    vue利用Moment插件格式化時(shí)間的實(shí)例代碼

    Moment.js 是一個(gè) JavaScript 日期處理類庫(kù),用于解析、檢驗(yàn)、操作、以及顯示日期。這篇文章主要給大家介紹了關(guān)于vue利用Moment插件格式化時(shí)間的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • 在vue項(xiàng)目中使用Nprogress.js進(jìn)度條的方法

    在vue項(xiàng)目中使用Nprogress.js進(jìn)度條的方法

    NProgress.js是輕量級(jí)的進(jìn)度條組件,使用簡(jiǎn)便,可以很方便集成到單頁(yè)面應(yīng)用中。這篇文章主要介紹了在vue項(xiàng)目中使用Nprogress.js進(jìn)度條的方法,需要的朋友可以參考下
    2018-01-01
  • Vue + iView實(shí)現(xiàn)Excel上傳功能的完整代碼

    Vue + iView實(shí)現(xiàn)Excel上傳功能的完整代碼

    前一段時(shí)間項(xiàng)目經(jīng)歷了前端上傳文件的過(guò)程,首先進(jìn)入頁(yè)面會(huì)展示默認(rèn)的樣子,選中要上傳的excel文件,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-06-06
  • Vue?響應(yīng)式系統(tǒng)依賴收集過(guò)程原理解析

    Vue?響應(yīng)式系統(tǒng)依賴收集過(guò)程原理解析

    Vue 初始化時(shí)就會(huì)通過(guò) Object.defineProperty 攔截屬性的 getter 和 setter ,為對(duì)象的每個(gè)值創(chuàng)建一個(gè) dep 并用 Dep.addSub() 來(lái)存儲(chǔ)該屬性值的 watcher 列表,這篇文章主要介紹了Vue?響應(yīng)式系統(tǒng)依賴收集過(guò)程分析,需要的朋友可以參考下
    2022-06-06
  • 通用vue組件化登錄頁(yè)面實(shí)例代碼

    通用vue組件化登錄頁(yè)面實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于通用vue組件化登錄頁(yè)面的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼將解決的辦法介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-08-08
  • vue.js移動(dòng)數(shù)組位置,同時(shí)更新視圖的方法

    vue.js移動(dòng)數(shù)組位置,同時(shí)更新視圖的方法

    下面小編就為大家分享一篇vue.js移動(dòng)數(shù)組位置,同時(shí)更新視圖的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03

最新評(píng)論

滨州市| 斗六市| 寻乌县| 景德镇市| 明星| 肥城市| 香河县| 龙陵县| 浑源县| 广丰县| 普安县| 全南县| 东阳市| 新泰市| 科技| 巴青县| 乌鲁木齐县| 大余县| 邛崃市| 南充市| 富宁县| 宜君县| 屯门区| 桐梓县| 得荣县| 金寨县| 大庆市| 庆安县| 宜川县| 奈曼旗| 红桥区| 平利县| 麻江县| 石家庄市| 西青区| 赤壁市| 龙游县| 文山县| 延吉市| 阿坝| 荥经县|