微信小程序,uni-app,语法是vue3,这个时候,页面中怎么获取到路由中携带的参数,分别列出5种方法
时间: 2024-10-09 11:00:44 浏览: 92
微信小程序和uni-app都是基于Vue.js开发的跨平台应用框架,虽然它们的语法基础相似,但在处理路由参数时可能会有一些细微差别。下面是五种在Vue3环境下(不论是微信小程序还是uni-app)获取路由参数的不同方法:
1. **通过$router.query**: 如果你在使用官方Vue Router,可以在组件的生命周期钩子(如`created()`或`mounted()`)中访问查询字符串参数:
```javascript
created() {
this.paramsFromQuery = this.$route.query.yourParam;
}
```
2. **props传递**: 如果路由是在父组件中定义并传递给子组件的,你可以通过props接收参数:
```html
<child-component :param="yourParamFromRoute"></child-component>
```
然后在子组件中接收到并使用:
```javascript
props: ['param'],
data() {
return { paramsFromProp: this.param };
}
```
3. **计算属性**: 使用Vue的计算属性来动态获取参数:
```javascript
computed: {
paramsComputed() {
return this.$route.query.yourParam;
}
},
```
4. **Vuex state管理**: 如果你正在使用 Vuex 存储状态,可以将参数存储在store中,然后在组件中读取:
```javascript
actions: {
async fetchParams({ commit }) {
const param = await this.$http.get('/your-api', { params: { yourParam: this.$route.query.yourParam } });
commit('setParams', param);
}
},
computed: {
paramsFromStore() {
return this.$store.state.yourKey;
}
}
```
5. **动态路由守卫(beforeRouteEnter)**: 对于Vue Router的异步路由守卫,在导航目标组件激活前,也可以获取参数:
```javascript
beforeRouteEnter(to, from, next) {
next(vm => {
vm.paramsFromGuard = to.query.yourParam;
});
}
```
阅读全文