vue.js - Vuetify stepper 根据状态加载组件
问题描述
我正在使用 vuetify 步进器。有 4 个步骤,每个步骤都有自己的组件。每个组件都会在挂载时触发 axios 调用。我想要实现的是根据步进器的步骤安装一个组件。我将如何创建这个?
<template>
<v-stepper v-model="state"
vertical
non-linear>
<v-stepper-step editable :complete="state > 1"
step="1">
General
</v-stepper-step>
<v-stepper-content step="1">
<generalBooks :url="url"
/>
<v-btn color="primary" @click="state = 2">Continue</v-btn>
<v-btn text>Cancel</v-btn>
</v-stepper-content>
....
<template>
<script>
export default{
data: () => ({ state: 1 })
}
</script>
解决方案
简单的方法是将 v-if 放在组件标签上以检查state
是否相等组件步骤
<v-stepper-content step="1">
<generalBooks v-if="state >= 1" :url="url" />
但是这样当客户端回到较低的步骤时组件再次重新渲染,另一种方法是检查步骤并将加载的组件名称保存watch
在state
数组中,并在 v-if 中使用当前组件名称重新检查数组或保存最高状态客户端观看所以组件已经加载
<v-stepper-content step="1">
<generalBooks v-if="highestState >= 1" :url="url" />
data(){
state: 1,
highestState: 1,
},
watch: {
state(val){
if(val > this.highestState) this.highestState = val;
},
}
推荐阅读
- mysql - 查询 MySQL 以显示整数和排序
- tkinter - 如何在我的游戏中添加屏幕计时器?
- javascript - 自定义模块中的 EventEmitter 抛出“.on(...) 不是函数”
- swift - 使用 Swift 进行 Cocoa 打印:“任何”打印机设置的边距/页面大小不规则,有什么解决方法吗?
- azure - 如何从 wwwroot azure app services 下创建的子文件夹启动我的应用程序
- firebase - Firebase 功能:无法加载默认凭据
- git - SourceTree中的提交太多,如何删除它们?
- boost - moodle左侧的块
- firebase - 即使文档字段在 Firestore 安全规则中不可用,如何允许访问?
- php - 在 WooCommerce 中将特定产品添加到购物车之前清空购物车