javascript - 向组件 Vue.js 中的 nabar 模态添加一个类
问题描述
我想知道如何将类添加到导航栏组件中的模式?我的导航栏在 App.vue 中,我想创建一条消息,当我单击它时,将“is-active”类添加到导航栏中的模式中。但是我找不到这样做的方法..
谢谢
解决方案
通常,当您有parent -> child
关系时,您可以使用events
. 在这种情况下,由于您有两个未(直接)链接的组件,因此您有两种选择。
使用 store (它通常用于您的应用程序大小合适的情况)
您可以使用vuex拥有一个中央位置,您将在其中拥有您的全局状态。一个简单的例子是:
商店/main.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
isModalOpen: false
},
getters: {
isModalOpen => (state) => state.isModalOpen,
},
mutations: {
setIsModalOpen (state, isOpen) {
state.isModalOpen = isOpen;
}
}
})
然后您可以像这样访问组件中的商店:
<template>
<navbar :class="[isNavBarOpen ? "is-active" : ""]" />
</template>
export default {
computed: {
isNavBarOpen () {
this.$store.getters['isModalOpen']
}
}
}
事件总线(它通常用于你有一个小应用程序并且不需要全局状态管理器的情况)
在此处阅读有关 EventBus的更多信息。
您可以创建一个简单的EventBus
服务/eventBus.js
import Vue from 'vue';
const export EventBus = new Vue();
然后在模态打开时在您的组件上,您可以执行以下操作:
// @ -> is an alias to your root folder. Most projects scafolded by Vue CLI has this by default
import {EventBus} from "@/services/eventBus"
export default {
methods: {
openStore: () => {
// your logic to open modal
EventBus.$emit('modal-open');
}
}
}
然后在你App.vue
身上你只听这个事件
应用程序.vue
<template>
<navbar :class="[isModalOpen ? "is-active" : ""]" />
</template>
// @ -> is an alias to your root folder. Most projects scafolded by Vue CLI has this by default
import {EventBus} from "@/services/eventBus"
export default {
data() {
return {
isModalOpen: false,
}
},
created() {
EventBus.$on('modal-open', this.onModalOpen);
},
methods: {
onModalOpen() {
this.isModalOpen = true;
}
}
}
您将选择哪一个取决于我们的应用程序结构,以及您是否认为它足够复杂以使用中央状态管理 (vuex)。
代码中可能包含一些错误,但主要思想就在那里。
推荐阅读
- python - 如何在 python 中获取 Wifi IP
- c - CYGWIN 控制台中的奇怪错误“检测到 cygheap 基础不匹配”
- javascript - 如何在错误对话框显示中显示 php 错误消息?
- java - Android - 视频活动
- python - 使用 python 并行运行 n 个 MATLAB 实例
- javascript - AJAX:如何在 vanilla JS 中通过 POST 发送简单参数
- python - 循环的条件下拉菜单未按预期方式工作
- sql - 如何在 SQL 中使用带有 While 循环的 openxml 将数据存储在表中以用于多个 XML
- signalr - Blazor 服务器端上的 Asp.Net Core SignalR 从不调用 OnDisconnectedAsync
- reactjs - 如何将surveyjs与react和typescript一起使用