亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • webpack搭建vue環(huán)境時報錯異常解決

    webpack搭建vue環(huán)境時報錯異常解決

    這篇文章主要介紹了webpack搭建vue環(huán)境時報錯異常解決,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • 詳細聊聊vue組件是如何實現組件通訊的

    詳細聊聊vue組件是如何實現組件通訊的

    組件間通信簡單來說就是組件間進行數據傳遞,就像我們日常的打電話,就是通訊的一種方式,下面這篇文章主要給大家介紹了關于vue組件是如何實現組件通訊的相關資料,需要的朋友可以參考下
    2022-05-05
  • Element-UI日期選擇器(選擇日期范圍)禁用未來日期實現代碼

    Element-UI日期選擇器(選擇日期范圍)禁用未來日期實現代碼

    我們在網頁開發(fā)時通常需要用到一些日期組件來方便用戶選擇時間,其中element日期組件是一個非常好用的工具,這篇文章主要給大家介紹了關于Element-UI日期選擇器(選擇日期范圍)禁用未來日期的相關資料,需要的朋友可以參考下
    2024-02-02
  • Vue向后臺傳數組數據,springboot接收vue傳的數組數據實例

    Vue向后臺傳數組數據,springboot接收vue傳的數組數據實例

    這篇文章主要介紹了Vue向后臺傳數組數據,springboot接收vue傳的數組數據實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue 實現超長文本截取,懸浮框提示

    vue 實現超長文本截取,懸浮框提示

    這篇文章主要介紹了vue 實現超長文本截取,懸浮框提示,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vite創(chuàng)建vue3項目頁面引用public下js文件失敗解決辦法

    vite創(chuàng)建vue3項目頁面引用public下js文件失敗解決辦法

    Vue3相較于之前的版本有了不少變化,如引用全局Js文件,這篇文章主要給大家介紹了關于vite創(chuàng)建vue3項目頁面引用public下js文件失敗的解決辦法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • Vue的生命周期操作示例

    Vue的生命周期操作示例

    這篇文章主要介紹了Vue的生命周期操作,結合實例形式分析了vue生命周期中各個函數的運行步驟,需要的朋友可以參考下
    2019-09-09
  • 解決Vue Loading PostCSS Plugin failed:Cannot find module autoprefixer問題

    解決Vue Loading PostCSS Plugin failed:Cann

    這篇文章主要介紹了解決Vue Loading PostCSS Plugin failed:Cannot find module autoprefixer問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue按住shift鍵多選方式(以element框架的table為例)

    vue按住shift鍵多選方式(以element框架的table為例)

    這篇文章主要介紹了vue按住shift鍵多選方式(以element框架的table為例),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue3中的ref和reactive響應式原理解析

    Vue3中的ref和reactive響應式原理解析

    這篇文章主要介紹了Vue3中的ref和reactive響應式,本節(jié)主要介紹了響應式變量和對象,以及變量和對象在響應式和非響應式之間的轉換,需要的朋友可以參考下
    2022-08-08

最新評論