Vue.js框架--Vuex实现组件里数据持久化(二十八)

主要操作技能:

     Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式

     新闻页面每次切换路由时,再次访问就会请求数据;那么如何直接从vuex中持久化数据呢?

      1)在store.js中  state定义list数组

/*1.state在vuex中用于存储数据*/
var state = {
	count: 1,
	list: [] //存储新闻数据
}

    2)在mutations中写方法 addList(state,data)

//2.mutations里面放的是方法,方法主要用于改变state里面的数据

var mutations = {
	addList(state,data) {  //如果有参数必须要有state这个参数哦!
		//		state.list.push(data); //请求的数据存入到list中
		state.list = data;
	}
}

编写代码:

News.vue 传统的方式

     <ul class="list">
			<li v-for="item in list">
				{{item.aid}}--{{item.title}}
			</li>
		</ul>


<script>
	import store from '../vuex/store.js'
	export default {
		data() {
			return {
				title: '新闻组件!',
				list: []

			}
		},
		store,
		methods: {
			changCount2() {
				this.$store.commit('incCount') //触发state里面的数据
			},
			requestData() {
				//新闻列表接口:
				var urls = 'http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1';

				this.$http.jsonp(urls).then((response) => {
						console.log(response);
						//save list
						this.list = response.data.result;
						
					},
					function(err) { //处理错误的回调
						console.log(err);
					})
			}
		},
		mounted() {

//       this.requestData();
			
		}

	}
</script>

效果:来回切换路由,就会每次请求数据

 

News.vue 持久化数据

<script>
	import store from '../vuex/store.js'
	export default {
		data() {
			return {
				title: '新闻组件!',
				list: []

			}
		},
		store,
		methods: {
			changCount2() {
				this.$store.commit('incCount') //触发state里面的数据
			},
			requestData() {
				//新闻列表接口:
				var urls = 'http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1';

				this.$http.jsonp(urls).then((response) => {
						console.log(response);
						//save list
						this.list = response.data.result;
						
						//数据存放到store
						//第一个参数方法名:addList
						//第二个参数数据: response.data.result 
						this.$store.commit('addList',response.data.result);
						
					},
					function(err) { //处理错误的回调
						console.log(err);
					})
			}
		},
		mounted() {
			
			var listData=this.$store.state.list;
			
			console.log(listData.length);
			
			//判断store中有没有数据
			if(listData.length>0){ //有数据
				this.list=listData;
			}else{  //没有请求数据
				this.requestData();
			}

			
		}

	}
</script>

 

效果:来回切换路由,就会从Vuex中取数据

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值