1. /* localStorge值只能是字符串 JSON.stringify JSON.parse */
    1. watch: {
    2. arr: {
    3. handler(newVal) {
    4. var words = JSON.parse(localStorage.getItem("words"));
    5. words = newVal;
    6. localStorage.setItem("words", JSON.stringify(words));
    7. },
    8. deep: true
    9. }
    10. }
    1. //使用localStorage+watch实现一个todoList
    2. <template>
    3. <div class="home">
    4. <h2>todoList</h2>
    5. <input type="text" v-model="keyword" @keyup.enter="handleEnter" />
    6. <div v-for="item of arr" :key="item.word">
    7. <input type="checkbox" v-model="item.checked" />
    8. {{item.word}}
    9. </div>
    10. </div>
    11. </template>
    12. <script>
    13. export default {
    14. name: "home",
    15. data() {
    16. return {
    17. keyword: "",
    18. arr: []
    19. };
    20. },
    21. /* [{word:"vue",checked:false},{word:"react",checked:false}] */
    22. methods: {
    23. handleEnter() {
    24. this.arr.push({ word: this.keyword, checked: false });
    25. var words = JSON.parse(localStorage.getItem("words"));
    26. words.push({ word: this.keyword, checked: false });
    27. localStorage.setItem("words", JSON.stringify(words));
    28. }
    29. },
    30. mounted() {
    31. let words = localStorage.getItem("words");
    32. if (words) {
    33. this.arr = JSON.parse(words);
    34. } else {
    35. localStorage.setItem("words", "[]");
    36. }
    37. },
    38. watch: {
    39. arr: {
    40. handler(newVal) {
    41. var words = JSON.parse(localStorage.getItem("words"));
    42. words = newVal;
    43. localStorage.setItem("words", JSON.stringify(words));
    44. },
    45. deep: true
    46. }
    47. }
    48. };
    49. </script>