/* localStorge值只能是字符串 JSON.stringify JSON.parse */
watch: {
arr: {
handler(newVal) {
var words = JSON.parse(localStorage.getItem("words"));
words = newVal;
localStorage.setItem("words", JSON.stringify(words));
},
deep: true
}
}
//使用localStorage+watch实现一个todoList
<template>
<div class="home">
<h2>todoList</h2>
<input type="text" v-model="keyword" @keyup.enter="handleEnter" />
<div v-for="item of arr" :key="item.word">
<input type="checkbox" v-model="item.checked" />
{{item.word}}
</div>
</div>
</template>
<script>
export default {
name: "home",
data() {
return {
keyword: "",
arr: []
};
},
/* [{word:"vue",checked:false},{word:"react",checked:false}] */
methods: {
handleEnter() {
this.arr.push({ word: this.keyword, checked: false });
var words = JSON.parse(localStorage.getItem("words"));
words.push({ word: this.keyword, checked: false });
localStorage.setItem("words", JSON.stringify(words));
}
},
mounted() {
let words = localStorage.getItem("words");
if (words) {
this.arr = JSON.parse(words);
} else {
localStorage.setItem("words", "[]");
}
},
watch: {
arr: {
handler(newVal) {
var words = JSON.parse(localStorage.getItem("words"));
words = newVal;
localStorage.setItem("words", JSON.stringify(words));
},
deep: true
}
}
};
</script>