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

Vuex管理dialog、toast等常見全局性組件狀態(tài)時唯一性的問題解決

 更新時間:2022年11月14日 10:20:35   作者:ychizzz  
工作中經常會用到類似于?dialog、toast、popover?等一些狀態(tài)提示組件,這篇文章主要介紹了Vuex管理dialog、toast等常見全局性組件狀態(tài)時唯一性的問題,需要的朋友可以參考下

前言

工作中經常會用到類似于 dialog、toast、popover 等一些狀態(tài)提示組件。對于這種全局性的組件,通常會用到 vuex 來管理組件的信息。這樣的好處是代碼維護起來更加友好,但是也需要考慮唯一性的問題。

場景

以 dialog 為例,唯一性問題是指當頁面中有多處內容調用了同一個事件,而這個事件都是修改了全局的 vuex 狀態(tài),從而導致頁面中多次依賴于全局狀態(tài)的組件會同時展示。例如以下場景:

要解決這樣的問題,需要在 state 中設置一個 id 變量,同時給組件調用的時候傳一個 id,在展示組件之前判斷兩個 id 是否一致,一致才展示。

代碼

store.js

const state = {
  id: "", // 用于判斷唯一性
  isShow: false,
};

const mutations = {
  setShowDialog(state, data) {
    state.id = data.id;
    state.isShow = true;
  },
};

export default {
  namespaced: true, // 解決命名沖突(使用時需要備注模塊名)
  state,
  mutations,
};

dialog.vue

<!-- 全局dialog組件 -->
<template>
  <div v-if="isShowCurrentDialog">
    <!-- 組件邏輯省略 -->
  </div>
</template>
<script>
import { mapState, mapMutations } from "vuex";
export default {
  props: {
    currId: {
      type: String,
      default: "",
    },
  },
  computed: {
    ...mapState(["id"]),
    isShowCurrentDialog() {
      if (this.currId) {
        return this.id === this.currId ? this.isShow : false;
      } else {
        return this.isShow;
      }
    },
  },
};
</script>

xxx.vue

<!-- 調用dialog的組件 -->
<template>
  <div>
    <ul>
      <!-- 模擬同時多個dialog調用場景 -->
      <li v-for="item in listData" :key="item.name" @click="setShowDialog({ id: item.name })">
        <Dialog :id="item.name" />
      </li>
    </ul>
  </div>
</template>
<script>
import { mapMutations } from "vuex";
export default {
  data() {
    return {
      listData: [
        {
          name: "aaa",
        },
        {
          name: "bbb",
        },
        {
          name: "ccc",
        },
      ],
    };
  },
  methods: {
    ...mapMutations(["setShowDialog"]),
  },
};
</script>

到此這篇關于Vuex管理dialog、toast等常見全局性組件狀態(tài)時唯一性的問題的文章就介紹到這了,更多相關Vuex全局性組件狀態(tài)時唯一性內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue兼容ie9的問題全面解決方案

    Vue兼容ie9的問題全面解決方案

    這篇文章主要介紹了Vue兼容ie9的問題全面解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 你準備好迎接vue3.0了嗎

    你準備好迎接vue3.0了嗎

    這篇文章主要介紹了你準備好迎接vue3.0了嗎,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • 基于Vue3實現(xiàn)一個小相冊詳解

    基于Vue3實現(xiàn)一個小相冊詳解

    這篇文章主要為大家詳細介紹了如何基于Vue3實現(xiàn)一個小相冊效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-12-12
  • Axios學習筆記之使用方法教程

    Axios學習筆記之使用方法教程

    axios是用來做數(shù)據(jù)交互的插件,最近正在學習axios,所以想著整理成筆記方便大家和自己參考學習,下面這篇文章主要跟大家介紹了關于Axios使用方法的相關資料,需要的朋友們下面來一起看看吧。
    2017-07-07
  • 詳解基于mpvue的小程序markdown適配解決方案

    詳解基于mpvue的小程序markdown適配解決方案

    本篇文章主要介紹了詳解基于mpvue的小程序markdown適配解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • vue.js+element 默認提示中英文操作

    vue.js+element 默認提示中英文操作

    這篇文章主要介紹了vue.js+element 默認提示中英文實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 關于element?ui中的el-scrollbar橫向滾動問題

    關于element?ui中的el-scrollbar橫向滾動問題

    這篇文章主要介紹了關于element?ui中的el-scrollbar橫向滾動問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue2.0父子組件間通信的實現(xiàn)方法

    vue2.0父子組件間通信的實現(xiàn)方法

    本篇文章主要介紹了vue2.0父子組件間通信的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • 淺談vue websocket nodeJS 進行實時通信踩到的坑

    淺談vue websocket nodeJS 進行實時通信踩到的坑

    這篇文章主要介紹了淺談vue websocket nodeJS 進行實時通信踩到的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vuejs手把手教你寫一個完整的購物車實例代碼

    vuejs手把手教你寫一個完整的購物車實例代碼

    這篇文章主要介紹了vuejs-手把手教你寫一個完整的購物車實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評論

台中县| 辛集市| 钟山县| 垫江县| 罗城| 长葛市| 布拖县| 岢岚县| 邵武市| 吐鲁番市| 蒙自县| 峨眉山市| 清徐县| 岳普湖县| 榕江县| 弥勒县| 连南| 新巴尔虎右旗| 阳江市| 余庆县| 峨山| 新余市| 金乡县| 河西区| 平乡县| 河间市| 于田县| 龙游县| 边坝县| 临潭县| 上高县| 五家渠市| 江北区| 建始县| 特克斯县| 花莲县| 寿光市| 南平市| 江门市| 康乐县| 额尔古纳市|