【发布时间】:2020-06-01 22:20:42
【问题描述】:
根据 var 项是否为真(单击按钮后),浏览器刷新后按钮文本“已完成”应保持不变。我不确定问题是什么,但我也尝试过 Chrome,所以我认为它与浏览器无关。
<template>
<button type="button" v-bind:class="order_button_style" @click="on_order_button_click()">
{{ buttonText }}
</button>
</div>
</template>
<script>
export default {
item: '',
data() {
return {
item2: this.item
}
},
methods: {
on_order_button_click() {
this.item2 = true;
localStorage.setItem(this.item2);
}
},
mounted() {
const storedState = localStorage.getItem(this.item2) === 'false';
if (storedState) {
this.item2 = storedState;
}
},
computed: {
buttonText() {
return this.item2 === true ? "Completed" : "Complete";
},
order_button_style() {
return this.item2 === true
? "btn btn-danger"
: "btn btn-primary";
}
}
};
</script>
【问题讨论】:
-
您永远不会在
localStorage中设置值。setItem有 2 个参数,名称和值,您只是在设置值。 developer.mozilla.org/en-US/docs/Web/API/Storage/setItem我相信你的意思是写localStorage.setItem('item', this.item2)和localStorage.getItem('item') -
谢谢,但似乎并没有解决持续问题。我正在刷新浏览器,按钮颜色和文本刚刚重置为 item = '' 的原始状态
-
在下面查看我的答案,
mounted中的if块将永远不会运行
标签: javascript vue.js local-storage