怎样使用localStorage保存页面中Vue渲染的列表,页面刷新后还原为之前的页面

<!DOCTYPE html>
<html>
<head>

<meta charset="UTF-8">
<title>Title</title>
<script src="dist/vue.js"></script>
<script type="text/javascript" src="https://cdn.bootcss.com/vue-resource/1.3.4/vue-resource.min.js"></script>
<script src="dist/vuex.min.js"></script>
<style>
    .mseeage{
        width: 800px;
        height: 60px;
        float: right;
    }
    .answer{
        width: 800px;
        height: 60px;
        float: left;
    }
</style>

</head>
<body>
<div id="box">

 <div v-for="item in $store.state.cartList"  >
      <p class="mseeage">{{ item.message }}<img src="images/tx1.jpg"></p>
      <p class="answer"><img src="images/tx2.jpg">{{ item.answer}}</p>
  </div>
 <div><input  v-model="message"><button id="save" @click="info()">发送</button></div>

</div>
<script>

const store =    new Vuex.Store({
    state:{
        cartList:[]//是记录用户列表状态
    },
    mutations:{
        setTalk(state,info){
            state.cartList.push(info)
        }
    }
})
var example1 = new Vue({
    el: '#box',
    data(){
        return{
            message:[],
            answer:[]
        }
    },
    methods:{
      info(){
          this.$http.get('http://www.tuling123.com/openapi/api?key=72d6117e0eef403c95c9aebe73a07e6a' + '&info=' + this.message)
              .then(function (response) {
                  console.log(response.body.text);
                  this.answer = response.body.text;
                  store.commit('setTalk',{
                      message:this.message,
                      answer:this.answer,
                  });
              });
        }
    },
    store
})

</script>
</body>
</html>

阅读 3k
2 个回答

看到你的数据是通过接口请求的, 那么就不用存本地了吧, 你在 created 函数内 调用一下 this.info() 方法, 这样每次刷新页面都会执行 created, 然后 去调用 this.info, 在通过 commit 将数据存到 state 内, 再然后就渲染出来了

有意思的问题~
刚想了一下,应用场景应该是要保留用户的操作,刷新页面后还原现场。如果能把要还原的组件内部所有状态保留到localStorage,应该就可以还原。
最傻的办法需要在每个组件内部单独维护自己的变量和localStorage里的对应关系,这样肯定可行但不灵活。
要通用的话,需要清楚vue是怎么获取组件实例对象,以及对象内部变量的存放路径。这不会是个简单的活,需要做很多抽象。
但两种方法的思路都是一样的:组件初始化时根据localStorage对组件变量赋值,监听变量变化并同步localStorage。
后来想到如果用vuex去管理这些需要还原的状态,实现起来会容易很多,但感觉如果不好好整理,会把vuex搞得很乱。。。
你要能完整的搞一套方案出来并落地的话一定会很出彩~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题