vue.js - 在商店中存储引导切换
问题描述
有没有办法在 vuex 商店中存储切换的 vue-bootstrap 视图?
<div class="mb-5 mt-5">
<button class="mr-2 button_class" v-b-toggle="'searchByName searchBySeason'">toggle</button>
</div>
<b-collapse id="searchByName" visible>
// stuff
</b-collapse>
<b-collapse id="searchBySeason">
// stuff
</b-collapse>
我想存储切换元素的状态,以便在重新加载页面后它仍然存在。
解决方案
您可以将属性绑定到<b-collapse>
's v-model
,这将是true
或false
取决于折叠状态。
然后,您可以例如使用带有 getter/setter 的计算属性来获取和设置您的商店状态。
<template>
<b-collapse v-model="isNameCollapseOpen" id="searchByName">
// stuff
</b-collapse>
</template>
<script>
export default {
computed: {
isNameCollapseOpen: {
get() {
// Get state from store
return this.$store.state.isNameCollapseOpen
},
set(isOpen) {
// Update store using a mutation
this.$store.commit('SET_NAME_COLLAPSE_STATE', isOpen)
}
}
}
}
</script>
请注意,保存在 Vuex 中的内容不会在页面加载之间持续存在,这意味着如果您重新加载页面,默认情况下状态会丢失。但是,有一些插件可以持久存储状态,例如vuex-persist或vuex-persistedstate。
例子
const store = new Vuex.Store({
state: {
isNameCollapseOpen: false
},
mutations: {
SET_NAME_COLLAPSE_STATE(state, isVisible) {
state.isNameCollapseOpen = isVisible
}
}
})
new Vue({
el: "#app",
store: store,
computed: {
isNameCollapseOpen: {
get() {
// Get state from store
return this.$store.state.isNameCollapseOpen
},
set(isOpen) {
// Update store using a mutation
this.$store.commit('SET_NAME_COLLAPSE_STATE', isOpen)
}
}
}
});
<link type="text/css" rel="stylesheet" href="https://unpkg.com/bootstrap@4.5.3/dist/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" href="https://unpkg.com/bootstrap-vue@2.21.2/dist/bootstrap-vue.min.css" />
<script src="https://unpkg.com/vue@2.6.12/dist/vue.min.js"></script>
<script src="https://unpkg.com/vuex@3.6.2/dist/vuex.js"></script>
<script src="https://unpkg.com/bootstrap-vue@2.21.2/dist/bootstrap-vue.min.js"></script>
<div id="app">
<b-btn v-b-toggle.search-by-name>Toggle collapse</b-btn>
<b-collapse v-model="isNameCollapseOpen" id="search-by-name">
Some text
</b-collapse>
<hr /> Store state: {{ $store.state.isNameCollapseOpen }}
</div>
推荐阅读
- google-sheets - 谷歌表格公式计算具有不同开始/结束日期、重叠和差距的任务的实际总持续时间
- c++ - Qt TCP 服务器不从客户端读取数据
- java - 如何在java中按第二个参数对列表进行排序?
- android - Currency NumberFormat 在调用 `parse` 后更改了 `format` 行为
- javascript - 重置表单时,样式单选按钮不会取消选择
- python - 每次按钮打开时,Raspberry Pi 都会闪烁 LED
- ruby-on-rails - 无法在 Rails 上运行迁移
- reactjs - React Hooks with typescript:类型上不存在属性“数据”
- javascript - 在 Nuxt 中编写自定义插件
- python - 使用元组列表创建 DataFrame;熊猫不识别列数