3.Vue监听

基本使用

watch 可以监听 data 的数据。当 data 数据发生改变时执行函数。这个函数会传入两个参数,分别是 newVal 和 oldVal,也就是改变前和改变后的值。

1:定义测试数据和监听。

<script src="js/vue.global.js"></script>
<script>
    var vm = Vue.createApp({
        data() {
            return {
                title: "你好,Vue3"
            }
        },
        watch: {
            title(newVal, oldVal) {
                console.log("newVal:", newVal, "oldVal:", oldVal);
            }
        }
    }).mount("#app");
</script>

2:实现 watch 监听。

<div id="app">
    <h1>{ {title} }</h1>
</div>

3:测试结果。

在这里插入图片描述

deep 与 immediate 属性

vue 默认关闭对象改变属性的监听。因为考虑到性能的问题,对象改变属性是非常频繁的操作,而且深度是不可控的。如果需要监听,就需要手动开启对象的深度监听,也就是设置 deep 为 true。

vue 默认情况下设置 immediate= false,也就是不会立即去加载监听对象的处理函数,只有改变 data 值才会触发。如果需要 vue 一加载完就立刻触发,就要手动设置 immediate 为 true。

1:定义测试数据和监听。

<script src="js/vue.global.js"></script>
<script>
    var vm = Vue.createApp({
        data() {
            return {
                user: {
                    id: 1,
                    person: { pid: 1 },
                    username: "yppah",
                    age: 18
                }
            }
        },
        watch: {
            user: {
                handler: function (newVal, oldVal) {
                    console.log("newVal:", newVal);
                    console.log("oldVal:", oldVal);
                },
                deep: true,
                immediate: true // watch默认不会立即加载 只有data改变才会触发和执行 如果想立即加载 就修改为true
            }
        }
    }).mount("#app");
</script>

2:实现 watch 监听。

<div id="app">
    <h1>{ {user.id} } == { {user.username} } == { {user.age} }</h1>
    <h3>{ {user.person.pid} }</h3>
</div>

3:测试结果。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: uni-app 是一个基于 Vue.js 开发跨平台应用的框架,其 app.vue 是 uni-app 应用的全局配置文件。在 app.vue监听当前路由可以实现一些页面跳转、权限校验等需要在整个应用中实现的操作。 具体实现方法如下: 1. 在 app.vue 中引入 uni-app 提供的路由 API ```javascript import uni from '@/common/uni.js' ``` 2. 在 app.vue 的 mounted 中添加监听函数监听路由变化 ```javascript mounted() { uni.onRouterChange((toRoute, fromRoute) => { //路由变化时的处理逻辑 console.log('当前路由:', toRoute.path) }) } ``` 3. 在监听函数中编写具体的处理逻辑,比如页面跳转、权限校验等操作。此时,可以通过 toRoute.path 获取当前路由路径。 需要注意的是,uni.onRouterChange() 只能在 app.vue 中使用,不能在其他组件中使用。 通过在 app.vue监听当前路由,可以实现对整个应用的路由变化进行监听和操作,提高了应用的交互性和用户体验。 ### 回答2: UniApp是一个基于Vue.js框架的跨平台开发系统。它可以同时开发多个平台,如H5、iOS、Android等。在UniApp中,app.vue是整个应用的入口文件,也是Vue组件中最顶层的父组件。因此,我们可以在app.vue监听当前路由。 在app.vue监听路由的步骤如下: 1. 在app.vue中定义一个computed属性currentRoute,定义方法如下: ``` computed: { currentRoute() { return this.$route.path } } ``` 2. 在template中可以通过{{currentRoute}}来获取当前路由的路径。 3. 当路由发生改变时,会自动重新计算computed中的值并更新视图。 4. 如果需要在路由改变时执行一些其他的操作,比如发送统计数据给服务器等,可以在watch中监听$route变化。 ``` watch: { $route(to, from) { // 发送统计数据给服务器等操作 } } ``` 通过以上步骤,在app.vue监听当前路由非常简单。我们可以实时获取当前路由的路径,也可以在路由改变时执行其他操作。这样的话,我们就可以在UniApp中更方便地管理应用的路由了。 ### 回答3: 针对问题 Uniapp app.vue监听当前路由,我们可以这样来解析。 首先需要明确的是,Vue 是一套用于构建用户界面的渐进式框架,而 Uniapp 是一套基于 Vue.js 的跨平台开发框架,支持一次编写,多端运行。 在 Uniapp 中,app.vue 是整个应用的根组件,负责页面的初始化、全局的状态管理等等。同时,它也是一个高阶组件,在其下包含了多个页面组件,并且可以通过监听当前路由,判断当前所处的路由位置,来进行不同的操作。 Uniapp 中可以通过 this.\$route.path 获取当前路由路径,我们可以把监听当前路由的操作放在 app.vue 的生命周期钩子函数中,如 mounted,实现对当前路由的监听。 代码如下: ``` // app.vue <template> <div id="app"> <router-view></router-view> </div> </template> <script> export default { mounted() { console.log('当前路由路径为:', this.$route.path) // 进行相应的操作 } } </script> ``` 以上代码将监听当前路由的操作放在了 app.vue 的 mounted 钩子函数中,当页面加载完成后,会输出当前路由路径,并在相应位置进行相应的操作。 总之,对于Uniapp app.vue监听当前路由问题,我们只需要通过监听当前路由路径,判断当前所处的路由位置,就可以实现不同的操作,这对于路由的管理和控制是非常重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

what's your name.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值