实现首页和搜索结果页的数据共享,以及点击之后数据传递且跳转

首先创建city-vuex分支

git pull

git checkout city-vuex

npm run start

如何实现,点击搜索结果页的条例,可以把数据传递到首页呢,这就需要首页和城市页,需要一些数据要分享了,城市选择页的数据如何传递给首页呢


City.vue文件和Home.vue文件没有一个公用的父级组件的,如何进行数据传递呢,vue官方提供了一个工具vuex,这是一个数据框架,在一个大型项目之中,vue只能承担视图层的内容,而涉及到大量数据的时候,就要需要一个数据框架进行辅助。

把公用的数据放到一个公共空间去存储,某一个组件改变了公共数据,其他的组件就能感知到也会改变,vuex就是一个公共的存储空间,story


公用数据都存放在stata里,组件想用公用数据,直接调用就可以了。如果想改变State里的数据,就要把一些异步操作放在Action里。组件调用Actions,紧接着,aCTions调用Mutations,Mutations里放的是一个一个的同步的对stata的修改。

组件改数据必须先调用actions,做一些异步处理,然后cations嗲用NMutations,再改变state里的值,有时也可以直接略过Actions,直接组件调用Mutations。

首先安装 cd 到文件夹,输入npm install vuex --save

第二步在src 目录下新建一个store文件夹,在里面新建一个index.js文件夹


第二步在main。js里引入这个文件


回到Home.vue,然后原先数据是通过ajax获取的,现在要删除


现在city是前端存储的,不需要后端你告诉我,所以在data里删了city




header。vue里city也不是由父组件传输的


同时删了props里city变量。

header区北京又被渲染了。



然后修改List.vue

<div class="button-wrapper">
  <!--<div class="button border-bottom">北京</div>-->
  <div class="button border-bottom">{{this.$store.state.city}}</div>
</div>

点击热门城市的时候,也能给传送到首页的header.vue如何做呢

第一步添加click事件


第二步

生命周期函数写在最下面


在index.js里要声明actions组件


可以正确打印出,但是还要创建Mutations组件



实现输入地名,点击搜索结果列表项 数据的传输(公共数据的改变)

在search.vue里添加方法



如何实现点击搜索列表 进入首页,而且地址数据传递到首页

router.push方法用来跳转

在search.vue里 当点击之后,添加 this。$router。push(‘/’),意思是跳转到首页

在list,vue里也添加折磨一句啊话

但是页面刷新之后,原先选中的城市会被上海代替,不能记住原先选择的是什么,如何改进呢

localstorage是api

1.


为了兼容浏览器需要些try () catch()来规范代码


刷新之后也没有更改地址

下面 优化代码


猜你喜欢

转载自blog.csdn.net/qq_41153478/article/details/80413154