[英]Vue JS conditional rendering on first time opening the page
我有一个 vue 组件应该在第一次打开页面时呈现,但我对此逻辑有点困惑。 我正在使用 localStorage 来验证 wasVisited 项目,我应该在某处将它设置为 1,以便下次打开触发模式的视图时,模式不会显示,我只是不确定在哪里,mounted() 不会似乎是我需要设置它的地方。
<template v-if="localStorage.getItem('wasVisited') === null">
<div>
<b-modal ref="disc" title="Hello" ok-only ok-variant="light" size="lg" body-bg-variant="dark" header-bg-variant="dark" header-text-variant="light" body-text-variant="light" footer-bg-variant="dark" footer-text-variant="light" title-class="text-light">
<div class="text-justify modal-text">
<p>Hi from modal</p>
</div>
</b-modal>
</div>
</template>
<script>
export default {
methods: {
showModal() {
this.$refs['disc'].show()
},
hideModal() {
this.$refs['disc'].hide()
},
},
mounted() {
console.log('Modal mounted.');
this.showModal();
localStorage.setItem('wasVisited', '1');
}
}
</script>
编写代码的更好方法应该是
<template>
<div>
<b-modal ref="disc" title="Hello" ok-only ok-variant="light" size="lg" body-bg-variant="dark" header-bg-variant="dark" header-text-variant="light" body-text-variant="light" footer-bg-variant="dark" footer-text-variant="light" title-class="text-light">
<div class="text-justify modal-text">
<p>Hi from modal</p>
</div>
</b-modal>
</div>
</template>
<script>
export default {
methods: {
showModal() {
this.$refs['disc'].show()
},
hideModal() {
this.$refs['disc'].hide()
},
},
mounted() {
console.log('Modal mounted.');
if(localStorage.getItem('wasVisited') === null) this.showModal();
localStorage.setItem('wasVisited', '1');
}
}
</script>
基本上我所做的是,我从您的模板中删除了您的v-if ,而是将其添加到您的挂载属性中,这样如果尚未设置 localStorage,则会自动调用显示模态的函数。 同时我们给wasVisited 赋值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.