1. localStorage:关闭窗口后缓存还在 值只能是字符串 localStorage只能设置字符串
    2. sessionStorage:临时会话框缓存,刷新可以存在,关闭窗口则无
    1. //1.设置缓存
    2. sessionStorage.setItem()
    3. //2.获取缓存
    4. sessionStorage.getItem()
    1. <template>
    2. <div class="home">
    3. <h2>todoList</h2>
    4. <input type="text" v-model="keyword" @keyup.enter="handleEnter" />
    5. <div v-for="item of arr" :key="item.word">
    6. <input type="checkbox" v-model="item.checked" />
    7. {{item.word}}
    8. </div>
    9. </div>
    10. </template>
    11. <script>
    12. export default {
    13. name: "home",
    14. data() {
    15. return {
    16. keyword: "",
    17. arr: []
    18. };
    19. },
    20. /* [{word:"vue",checked:false},{word:"react",checked:false}] */
    21. methods: {
    22. handleEnter() {
    23. /* localStorge值只能是字符串 JSON.stringify JSON.parse */
    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. //有缓存则取缓存,没有缓存设置缓存
    32. let words = localStorage.getItem("words");
    33. if (words) {
    34. this.arr = JSON.parse(words);
    35. } else {
    36. localStorage.setItem("words", "[]");
    37. }
    38. },
    39. watch: {
    40. arr: {
    41. handler(newVal) {
    42. var words = JSON.parse(localStorage.getItem("words"));
    43. words = newVal;
    44. localStorage.setItem("words", JSON.stringify(words));
    45. },
    46. deep: true
    47. }
    48. }
    49. };
    50. </script>