✨:隐藏tabbar、对城市数据进行获取、处理、渲染到页面上 | 旅途拾景
:东非不开森的主页
: 怎么会没有遗憾呢,一直向前就对了
: 如有错误或不足之处,希望可以指正,非常感谢
建立一个页面,将页面配置到路由里面,在meta里面设置一下开关,
官方这样解释meta:
有时,你可能希望将任意信息附加到路由上,如过渡名称、谁可以访问路由等。这些事情可以通过接收属性对象的meta属性来实现,并且它可以在路由地址和导航守卫上都被访问到。
说白了就是通过meta对象中的一些属性来判断当前路由是否需要进一步处理,如果需要处理,按照自己想要的效果进行处理即可
这样跳转的时候就不会有tabbar了
这样就可以跳转了
先安装axios
npm install axios
request下面的index.js
axios二次封装
import axios from 'axios'
import { BASE_URL, TIMEOUT } from './config'
class KKRequest {
constructor(baseURL, timeout=10000) {
this.instance = axios.create ({
baseURL,
timeout
})
}
request(config) {
return new Promise((resolve, reject) => {
this.instance.request(config).then(res => {
resolve(res.data)
}).catch(err => {
reject(err)
})
})
}
get(config) {
return this.request({...config, method: "get"})
}
post(config) {
return this.request({ ...config, method: "post" })
}
}
export default new KKRequest(BASE_URL, TIMEOUT)
request下面的config.js
配置时间,ip地址
在vue3中我们需要把拿到的数据变成响应式的,需要用ref
第二种。推荐
v-for遍历
这种获取的数据是动态的,如果服务器返回的数据有变化,那么这边也不会有影响
Pinia本质上依然是一个状态管理的库,用于跨组件、页面进行状态共享
Store 是使用 defineStore() 定义的
注意Store获取到后不能被解构,那么会失去响应式:
为了从 Store 中提取属性同时保持其响应式,您需要使用storeToRefs()
这样就可以啦
然后在vant官方文档发现了用那么可以作为匹配的标识符
索引我们就可以用name绑定key
然后我们就可以去动态切换获取数据了
我们应该先分析数据,看一下自己需要什么数据,再考虑一下,怎样拿到数据
我们要拿到的是cityGroup下的cities
默认直接获取的数据不是响应式的,所以我们要包裹computed
我们的目的就是为了拿到数据,因为这个数据是分标签的,所以我们就要获取选中标签后的数据
computed官网解释
这里使用vant库组件
并且把这部分内容放在一个组件里面
用defineProps进行传值
defineProps:
用于组件通信中父级组件给子级组件传值,其用来声明props,其接收值为props选项相同的值
频繁切换,国内和海外城市索引量很大,如果国内和海外进行切换,那么意味中,重新进行两次for循环(最外面一次遍历索引,里面遍历城市)),重新进行渲染。
这样渲染的效率就会低。
方法:
考虑使用v-show(v-if还是会重新渲染)
v-show控制仅当切换的索引等于key的时候,才进行
不然就为display:none
我们加了热门以后,会发现数据和左边对不上,这是因为vant库提供的是默认的,并没有跟我们的数据相关,所以我们可以用map遍历一下数据,动态显示
这里使用计算属性computed,并且用props进行传值,因为这里我们需要用groupData
unshift:在最前面加上某一个值等