Vue的几个开发技巧

1、在父组件中绑定子组件的生命周期

我们一般的写法是在子组件的mounted中调用异步方法获取相应数据进行渲染。当然,异步方法中的一些参数可以在路由中获取,也有可能必须通过父组件的props传递。当该组件的通用性较强时,异步调用的方法和接口都可能发生变化,因此我们希望子组件只负责渲染。这样,可以通过以下方法实现:

子组件:

export default {
    mounted() {
        this.$emit('getData');
    }
}

父组件

<template>
    <div>
        <Child @getData="getData" :data="data" />
    </div>
</template>

 

其实还有一种简洁的方法,使用@hook即可监听组件生命周期,子组件内只需要负责渲染,同样的,created、updated等也可以使用此方法。

<template>
    <div>
        <Child @hook:mounted="getData">
    </div>
</template>

 

2、定时器解绑

有时候我们在页面挂载时需要使用到计时器,相应的,在页面销毁时需要清除定时器。下面的代码看起来没啥问题,但仔细一看,this.timer 唯一的作用只是能够在beforeDestroy内取到计时器序号,除此之外没有任何用处。

export default {
    mounted() {
        this.timer = setInterval(() => {
            // 相应操作
        }):
    },
    beforeDestroy() {
        clearInterval(this.timer);
    }
}

这里,我们可以通过$on或者$once监听页面生命周期销毁来解决这个问题:

export default {
    mounted() {
        this.creatInterval(Date.now());
    },
    creatInterval(now) {
        let timer = setInterval(() => {
            console.log(now);
        }, 1000)
        this.$once('hook:beforeDestroy', function() {
            clearInterval(timer);
        })
    }
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue页面设计开发中,有几个技巧是可以提高效率和代码质量的。首先,在样式中使用scoped属性可以确保样式只作用于当前组件,不会影响其他组件的样式。这可以通过使用deep选择器实现,例如在<style scoped>标签中使用 .my-content >>> .child-component { font-size: 16px; } 的方式。 其次,Vue提供了模板语法来搭建HTML,这在大多数情况下是推荐的做法。然而,在某些特定场景下,我们可能需要使用JavaScript的完全编程能力,这时候可以使用渲染函数来实现。渲染函数可以帮助我们更灵活地构建组件,同时也提供了与JSX相似的语法。可以根据具体需求来选择使用模板语法或渲染函数,以获得更好的开发体验。 对于Vue项目的报表设计器和积木报表模块,可以参考ruoyi-vue-pro yudao项目中的相关SQL脚本和启用方式。这个项目可能提供了一些关于报表设计和模块开启的经验和教程,可以作为参考资料。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [超实用的Vue技巧开发常用整理)](https://blog.csdn.net/weixin_55953988/article/details/122621453)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [分享 9个 关于 vue3 相关的开发技巧](https://blog.csdn.net/Ed7zgeE9X/article/details/124486530)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [ruoyi-vue-pro yudao 项目报表设计器 积木报表模块启用及相关SQL脚本](https://download.csdn.net/download/zengwenbo225566/88234865)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值