国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue + Element UI 前端篇(八):管理應用狀態(tài)

這篇具有很好參考價值的文章主要介紹了Vue + Element UI 前端篇(八):管理應用狀態(tài)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

使用 Vuex 管理應用狀態(tài)

1. 引入背景

像先前我們是有導航菜單欄收縮和展開功能的,但是因為組件封裝的原因,隱藏按鈕在頭部組件,而導航菜單在導航菜單組件,這樣就涉及到了組件收縮狀態(tài)的共享問題。收縮展開按鈕觸發(fā)收縮狀態(tài)的修改,導航菜單需要根據(jù)收縮狀態(tài)來設置導航欄的寬度。這樣就需要在收縮狀態(tài)變更時刷新導航菜單樣式。后續(xù)類似的組件狀態(tài)共享還會有許多。為了解決組件間狀態(tài)的共享,增加組件交互的易用性,我們引入 vuex 專門管理應用狀態(tài)。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

2. 安裝依賴

執(zhí)行以下命令,安裝 vuex 依賴。

yarn add vuex

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

3. 添加配置

3.1 添加 Store

在 src 目錄下,新建一個 store 目錄,專門管理應用狀態(tài),在 index.js 中創(chuàng)建 store。

?

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

index.js

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

import Vue from 'vue'
import vuex from 'vuex'

Vue.use(vuex);

const store = new vuex.Store({
    state:{
        collapse:false  // 導航欄收縮狀態(tài)
    },
    mutations:{
        collapse(state){  // 改變收縮狀態(tài)
            state.collapse = !state.collapse;
        }
    }
})

export default store

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

3.2 引入 Store

?在 main.js 引入 store

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

4. 使用 Store

4.1 修改狀態(tài)

在原先響應折疊導航欄的函數(shù)內(nèi)替換原有邏輯,改為發(fā)送提交請求來改變收縮狀態(tài)。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

4.2 獲取狀態(tài)

在原先引用 collapse 的地方改為引用 $store.state.collapse 。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

根據(jù)收縮狀態(tài)綁定不同樣式,就可以實現(xiàn)導航菜單欄根據(jù)收縮狀態(tài)更新頁面效果了。

MenuBar.vue

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

HeadBar.vue

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

?Main.vue

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

5. 測試效果

進入主頁,點擊收縮按鈕,效果如下圖。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

Store 模塊化

現(xiàn)在我們的狀態(tài)都維護在index.js,狀態(tài)一多就會出現(xiàn)臃腫,這里可以根據(jù)需求進行模塊化。

1. 文件結構

模塊化后的文件結構

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

2. Store 封裝

改寫index.js,引入模塊化,這里把之前的狀態(tài)抽取到AppStore,后續(xù)可能還會有UserStore、MenuStore之類的。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

import Vue from 'vue'
import vuex from 'vuex'

Vue.use(vuex);

import AppStore from './modules/AppStore.js';

const store = new vuex.Store({
    modules: {
        app: AppStore   
        // 其他
    }
})

export default store

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

AppStore.js

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

export default {
    state: {
        appName: "I like Kitty",  // 應用名稱
        collapse:false  // 導航欄收縮狀態(tài)
    },
    getters: {
        collapse(state){// 對應著上面state
            return collapse;
        }
    },
    mutations: {
        collapse(state){  // 改變收縮狀態(tài)
            state.collapse = !state.collapse;
        }
    },
    actions: {

    }
}

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

?3. 狀態(tài)引用

在引用 store 狀態(tài)的地方加上模塊名稱

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

如果一個文件內(nèi)引用過多,嫌引用路勁又長又臭,可以使用 mapState、mapGetter、mapActions 工具進行簡化。

如 MenuBar.vue 中引用較多,我們用 mapState 簡化對屬性的引用。如下圖,給狀態(tài)賦予別名。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

?引用狀態(tài)的地方就可以直接用上面定義的別名進行訪問了。

?

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

mapState、mapGetter、mapActions 工具對于文件內(nèi)大量又長又臭的狀態(tài)引用時非常有用,可以適當?shù)倪\用。

封裝收縮組件

1. 組件封裝

?如下圖,新建目錄和文件,封裝收縮組件展開導航欄組件。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

Hamburger/index.vue

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

<template>
  <svg t="1492500959545" @click="toggleClick" class="hamburger" :class="{'is-active':isActive}" style="" viewBox="0 0 1024 1024"
    version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1691" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64">
    <path d="M966.8023 568.849776 57.196677 568.849776c-31.397081 0-56.850799-25.452695-56.850799-56.850799l0 0c0-31.397081 25.452695-56.849776 56.850799-56.849776l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.849776l0 0C1023.653099 543.397081 998.200404 568.849776 966.8023 568.849776z"
      p-id="1692"></path>
    <path d="M966.8023 881.527125 57.196677 881.527125c-31.397081 0-56.850799-25.452695-56.850799-56.849776l0 0c0-31.397081 25.452695-56.849776 56.850799-56.849776l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.849776l0 0C1023.653099 856.07443 998.200404 881.527125 966.8023 881.527125z"
      p-id="1693"></path>
    <path d="M966.8023 256.17345 57.196677 256.17345c-31.397081 0-56.850799-25.452695-56.850799-56.849776l0 0c0-31.397081 25.452695-56.850799 56.850799-56.850799l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.850799l0 0C1023.653099 230.720755 998.200404 256.17345 966.8023 256.17345z"
      p-id="1694"></path>
  </svg>
</template>

<script>
export default {
  name: 'hamburger',
  props: {
    isActive: {
      type: Boolean,
      default: false
    },
    toggleClick: {
      type: Function,
      default: null
    }
  }
}
</script>

<style scoped>
.hamburger {
  display: inline-block;
  cursor: pointer;
  width: 20px;
  height: 20px;
  transform: rotate(90deg);
  transition: .38s;
  transform-origin: 50% 50%;
}
.hamburger.is-active {
  transform: rotate(0deg);
}
</style>

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

2. 引入組件

HeadBar.vue 中引入組件

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

響應函數(shù),通過 store 修改收縮狀態(tài)

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

3. 測試效果

進入主頁,效果如下圖。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

封裝面包屑組件

將面包屑從主內(nèi)容中抽取出來,封裝成 BreadCrumb。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

BreadCrumb/index.vue

<template>
  <el-breadcrumb separator="/" class="breadcrumb">
    <el-breadcrumb-item v-for="item in $route.matched" :key="item.path">
      <a href="www.baidu.com">{{ item.name }}</a>
    </el-breadcrumb-item>
  </el-breadcrumb>
</template>

<script>
export default {
  data() {
    return {
    };
  },
  methods: {

  },
  mounted() {

  }
};
</script>

<style scoped lang="scss">
.breadcrumb {
  padding: 10px;  
  border-color: rgba(38, 86, 114, 0.2);
  border-bottom-width: 1px;
  border-bottom-style: solid;
  // background: rgba(180, 189, 196, 0.1);
}
</style>

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

main.js 中 引入

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

動態(tài)換膚

1. 功能背景

之前的動態(tài)換膚,只能刷新 Element 相關組件的顏色,而如果我們希望在換膚的時候我們的頭部區(qū)域也同步改變就需要做進一步的修改了。接下來,我們就實現(xiàn)這個功能,賦予換膚組件在更新 Element 組件顏色的時候,可以定制插入一些自定義的操作。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

2. 改進ThemePicker?

修改 ThemePicker 插件, 綁定導出函數(shù)和主題色參數(shù)。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

3. 父組件函數(shù)綁定

在父組件綁定處理函數(shù),增加自定義同步更新邏輯。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

這里是切換主題顏色的時候,設置 store 狀態(tài),保存共享主題色,這樣其他綁定主題色的組件都可以自動更新了。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

4. 添加共享狀態(tài)

在 store 中定義主題色相關的狀態(tài)。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

5. 共享狀態(tài)引入

在要使用的組件處引入主題色狀態(tài)。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

組件樣式綁定主題色狀態(tài),主題色并更時,更新組件背景色樣式。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言

6. 測試效果

進入主頁,點擊動態(tài)換膚取色器,換膚效果如下。

Vue + Element UI 前端篇(八):管理應用狀態(tài),javascript,vue.js,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-701243.html

到了這里,關于Vue + Element UI 前端篇(八):管理應用狀態(tài)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【前端】Vue+Element UI案例:通用后臺管理系統(tǒng)-面包屑、tag欄

    【前端】Vue+Element UI案例:通用后臺管理系統(tǒng)-面包屑、tag欄

    參考視頻: VUE項目,VUE項目實戰(zhàn),vue后臺管理系統(tǒng),前端面試,前端面試項目 案例 鏈接 【前端】Vue+Element UI案例:通用后臺管理系統(tǒng)-導航欄(視頻p1-16) https://blog.csdn.net/karshey/article/details/127640658 【前端】Vue+Element UI案例:通用后臺管理系統(tǒng)-Header+導航欄折疊(p17-19) http

    2024年02月09日
    瀏覽(64)
  • 【vue3】前端應用中使用WebSocket與服務器進行通信并管理連接狀態(tài)。

    1、寫一個hook函數(shù) url 是WebSocket的服務器地址,其中 Math.random() 用于生成一個隨機數(shù),以避免緩存問題。 onConnected 、 onDisconnected 和 onError 是連接建立、斷開和出錯時的回調(diào)函數(shù),你可以根據(jù)實際需求來定義它們。 onMessageDefault 是當接收到消息時的默認處理函數(shù),在這里將接收

    2024年02月09日
    瀏覽(46)
  • 基于vue-cli創(chuàng)建后臺管理系統(tǒng)前端頁面——element-ui,axios,跨域配置,布局初步,導航欄

    基于vue-cli創(chuàng)建后臺管理系統(tǒng)前端頁面——element-ui,axios,跨域配置,布局初步,導航欄

    1.vue-cli創(chuàng)建前端工程,安裝element-ui,axios和配置; 2.前端跨域的配置,請求添加Jwt的設置; 3.進行初始化布局,引入新增頁面的方式; 4.home頁面導航欄的設置,一級目錄,二級目錄; 安裝成功 布局初步 1.vue-cli創(chuàng)建前端工程,安裝element-ui,axios和配置; 2.前端跨域的配置,請

    2024年02月09日
    瀏覽(34)
  • ?Vue + Element UI前端篇(二):Vue + Element 案例 ?

    ?Vue + Element UI前端篇(二):Vue + Element 案例 ?

    打開 Visual Studio Code,F(xiàn)ile -- add Folder to Workspace,導入我們的項目。 安裝依賴 Element 是國內(nèi)餓了么公司提供的一套開源前端框架,簡潔優(yōu)雅,提供了 vue、react、angular 等多個版本,我們這里使用 vue 版本來搭建我們的界面。 訪問:http://element-cn.eleme.io/#/zh-CN/component/installation?,官

    2024年02月09日
    瀏覽(25)
  • Vue + Element UI 前端篇(六):更換皮膚主題

    Vue + Element UI 前端篇(六):更換皮膚主題

    命令行主題工具 1.安裝主題工具 首先安裝「主題生成工具」,可以全局安裝或者安裝在當前項目下,推薦安裝在項目里,方便別人 clone 項目時能直接安裝依賴并啟動。 2.安裝chalk主題 安裝白堊主題,可以從 npm 安裝或者從 GitHub 拉取最新代碼,這里從 npm 安裝。 3.初始化變量

    2024年02月09日
    瀏覽(31)
  • Vue + Element UI 前端篇(七):功能組件封裝

    Vue + Element UI 前端篇(七):功能組件封裝

    為了避免組件代碼的臃腫,這里對主要的功能部件進行封裝,保證代碼的模塊化和簡潔度。 組件結構 組件封裝重構后,試圖組件結構如下圖所示 代碼一覽 Home組件被簡化,包含導航、頭部和主內(nèi)容三個組件。 Home.vue HeadBar.vue MenuBar.vue Main.vue 國際化語言切換也被封裝成為了組

    2024年02月09日
    瀏覽(27)
  • Vue + Element UI 前端篇(十五):嵌套外部網(wǎng)頁

    Vue + Element UI 前端篇(十五):嵌套外部網(wǎng)頁

    在有些時候,我們需要在我們的內(nèi)容欄主區(qū)域顯示外部網(wǎng)頁。如查看服務端提供的SQL監(jiān)控頁面,接口文檔頁面等。 這個時候就要求我們的導航菜單能夠解析嵌套網(wǎng)頁的URL,并根據(jù)URL路由到相應的嵌套組件。接下來我們就講解具體實現(xiàn)方案。 實現(xiàn)原理 1. 給菜單URL添加嵌套網(wǎng)頁

    2024年02月08日
    瀏覽(30)
  • Vue + Element UI 前端篇(九):接口格式定義

    Vue + Element UI 前端篇(九):接口格式定義

    前臺顯示需要后臺數(shù)據(jù),我們這里先把前后端交互接口定義好,沒有后臺的時候,也方便用mock模擬。 接口定義遵循幾個規(guī)范: 1. 接口按功能模塊劃分。 系統(tǒng)登錄:登錄相關接口 用戶管理:用戶管理相關接口 機構管理:機構管理相關接口 角色管理 : 角色管理相關接口 菜單

    2024年02月09日
    瀏覽(28)
  • Vue + Element UI 前端篇(十):動態(tài)加載菜單

    Vue + Element UI 前端篇(十):動態(tài)加載菜單

    之前我們的導航樹都是寫死在頁面里的,而實際應用中是需要從后臺服務器獲取菜單數(shù)據(jù)之后動態(tài)生成的。 我們在這里就用上一篇準備好的數(shù)據(jù)格式Mock出模擬數(shù)據(jù),然后動態(tài)生成我們的導航菜單。 接口模塊化 我們向來講究模塊化,之前接口都集中在,interface.js,我們現(xiàn)在把

    2024年02月09日
    瀏覽(31)
  • Vue + Element UI 前端篇(一):搭建開發(fā)環(huán)境

    Vue + Element UI 前端篇(一):搭建開發(fā)環(huán)境

    開發(fā)之前,請先熟悉下面的4個文檔 vue.js2.0中文, 優(yōu)秀的JS框架 vue-router, vue.js 配套路由 vuex,vue.js 應用狀態(tài)管理庫 Element,餓了么提供的UI框架 Node JS(npm) Visual Studio Code(前端IDE) 下載地址:?官網(wǎng)下載地址 Visual Studio Code 是一款非常優(yōu)秀的開源編輯器,非常適合作為前端I

    2024年02月09日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包