当前位置: 首页 > news >正文

网站建设开头推广普通话海报

网站建设开头,推广普通话海报,旅游企业网站建设工作的通知,wordpress 数组文章目录1.路由参数解耦2.功能组件3.样式范围4.watch的高级使用5.watch监听多个变量6.事件参数$event7.程序化事件监听器8.监听组件生命周期1.路由参数解耦 通常在组件中使用路由参数,大多数人会做以下事情。 export default {methods: {getParamsId() {return th…

文章目录

        • 1.路由参数解耦
        • 2.功能组件
        • 3.样式范围
        • 4.watch的高级使用
        • 5.watch监听多个变量
        • 6.事件参数$event
        • 7.程序化事件监听器
        • 8.监听组件生命周期


1.路由参数解耦

通常在组件中使用路由参数,大多数人会做以下事情。

export default {methods: {getParamsId() {return this.$route.params.id}}
}

在组件中使用 $route 会导致与其相应路由的高度耦合,通过将其限制为某些 URL 来限制组件的灵活性。正确的做法是通过 props 来解耦。

const router = new VueRouter({routes: [{path:  /user/:id ,component: User,props: true}]
})

将路由的 props 属性设置为 true 后,组件内部可以通过 props 接收 params 参数。

export default {props: [ id ],methods: {getParamsId() {return this.id}}
}

您还可以通过功能模式返回道具。

const router = new VueRouter({routes: [{path:  /user/:id ,component: User,props: (route) => ({id: route.query.id})}]
})

2.功能组件

功能组件是无状态的,它不能被实例化,也没有任何生命周期或方法。创建功能组件也很简单,只需在模板中添加功能声明即可。它一般适用于只依赖于外部数据变化的组件,并且由于其轻量级而提高了渲染性能。组件需要的一切都通过上下文参数传递。它是一个上下文对象,具体属性见文档。这里的 props 是一个包含所有绑定属性的对象。

<template functional><div class="list"><div class="item" v-for="item in props.list" :key="item.id" @click="props.itemClick(item)"><p>{{item.title}}</p><p>{{item.content}}</p></div></div>
</template>

父组件使用

<template><div><List :list="list" :itemClick="item => (currentItem = item)" /></div>
</template>
import List from  @/components/List.vue
export default {components: {List},data() {return {list: [{title:  title ,content:  content}],currentItem:}}
}

3.样式范围

开发中修改第三方组件样式很常见,但是由于scoped属性的样式隔离,可能需要去掉scoped或者另起一个样式。这些做法有副作用(组件样式污染,缺乏优雅),在css预处理器中使用样式渗透来生效。我们可以使用 >>> 或者 /deep/ 来解决这个问题:

<style scoped>
Outer layer >>> .el-checkbox {display: block;font-size: 26px;.el-checkbox__label {font-size: 16px;}
}
</style>
<style scoped>
/deep/ .el-checkbox {display: block;font-size: 26px;.el-checkbox__label {font-size: 16px;}
}
</style>

4.watch的高级使用

watch 在监听器属性发生变化时触发,有时我们希望 watch 在组件创建后立即执行。可能想到的方式是在创建生命周期中调用它一次,但这不是一种优雅的编写方式,所以也许我们可以使用这样的东西。

export default {data() {return {name:  Joe}},watch: {name: {handler:  sayName ,immediate: true}},methods: {sayName() {console.log(this.name)}}
}

Deep Listening监听一个对象时,当对象内部的属性发生变化时,watch是不会被触发的,所以我们可以为它设置深度监听。

export default {data: {studen: {name:  Joe ,skill: {run: {speed:  fast}}}},watch: {studen: {handler:  sayName ,deep: true}},methods: {sayName() {console.log(this.studen)}}
}

触发监听器执行多个方法使用数组,您可以设置多个形式,包括字符串、函数、对象。

export default {data: {name:  Joe},watch: {name: [sayName1 ,function(newVal, oldVal) {this.sayName2()},{handler:  sayName3 ,immaediate: true}]},methods: {sayName1() {console.log( sayName1==> , this.name)},sayName2() {console.log( sayName2==> , this.name)},sayName3() {console.log( sayName3==> , this.name)}}
}

5.watch监听多个变量

watch 本身不能监听多个变量。但是,我们可以通过返回具有计算属性的对象然后监听该对象来“监听多个变量”。

export default {data() {return {msg1:  apple ,msg2:  banana}},compouted: {msgObj() {const { msg1, msg2 } = thisreturn {msg1,msg2}}},watch: {msgObj: {handler(newVal, oldVal) {if (newVal.msg1 != oldVal.msg1) {console.log( msg1 is change )}if (newVal.msg2 != oldVal.msg2) {console.log( msg2 is change )}},deep: true}}
}

6.事件参数$event

$event 是事件对象的一个特殊变量,它在某些场景下为我们提供了更多的可用参数来实现复杂的功能。本机事件:与本机事件中的默认事件对象行为相同。

<template><div><input type="text" @input="inputHandler( hello , $event)" /></div>
</template>
export default {methods: {inputHandler(msg, e) {console.log(e.target.value)}}
}

自定义事件:在自定义事件中表示为捕获从子组件抛出的值。

export default {methods: {customEvent() {this.$emit( custom-event ,  some value )}}
}
<template><div><my-item v-for="(item, index) in list" @custom-event="customEvent(index, $event)"></my-list></div>
</template>
export default {methods: {customEvent(index, e) {console.log(e) //  some value}}
}

7.程序化事件监听器

例如,在页面挂载时定义一个定时器,需要在页面销毁时清除定时器。这似乎不是问题。但仔细观察,this.timer 的唯一目的是能够在 beforeDestroy 中获取计时器编号,否则是无用的。

export default {mounted() {this.timer = setInterval(() => {console.log(Date.now())}, 1000)},beforeDestroy() {clearInterval(this.timer)}
}

如果可能,最好只访问生命周期挂钩。这不是一个严重的问题,但可以认为是混乱。我们可以通过使用 或once 监听页面生命周期销毁来解决这个问题:

export default {mounted() {this.creatInterval( hello )this.creatInterval( world )},creatInterval(msg) {let timer = setInterval(() => {console.log(msg)}, 1000)this.$once( hook:beforeDestroy , function() {clearInterval(timer)})}
}

使用这种方法,即使我们同时创建多个定时器,也不影响效果。这是因为它们将在页面被销毁后以编程方式自动清除。

8.监听组件生命周期

通常我们使用 $emit 监听组件生命周期,父组件接收事件进行通知。子组件

export default {mounted() {this.$emit( listenMounted )}
}

父组件

<template><div><List @listenMounted="listenMounted" /></div>
</template>

其实有一种简单的方法就是使用@hook 来监听组件的生命周期,而不需要在组件内部做任何改动。同样,创建、更新等也可以使用这个方法。

<template><List @hook:mounted="listenMounted" />
</template>

文章转载自:
http://insatiate.bfmq.cn
http://redefection.bfmq.cn
http://stingray.bfmq.cn
http://cheeper.bfmq.cn
http://bulli.bfmq.cn
http://unrip.bfmq.cn
http://yond.bfmq.cn
http://begotten.bfmq.cn
http://consenting.bfmq.cn
http://swimgloat.bfmq.cn
http://torricellian.bfmq.cn
http://microzyme.bfmq.cn
http://decillion.bfmq.cn
http://replenisher.bfmq.cn
http://inestimable.bfmq.cn
http://bhl.bfmq.cn
http://acquaalta.bfmq.cn
http://nccm.bfmq.cn
http://vernalize.bfmq.cn
http://cybernate.bfmq.cn
http://ugandan.bfmq.cn
http://microlinguistics.bfmq.cn
http://springer.bfmq.cn
http://avellane.bfmq.cn
http://towpath.bfmq.cn
http://svetlana.bfmq.cn
http://udalman.bfmq.cn
http://choreographic.bfmq.cn
http://bonesetter.bfmq.cn
http://improper.bfmq.cn
http://milk.bfmq.cn
http://handwheel.bfmq.cn
http://bopomofo.bfmq.cn
http://dustproof.bfmq.cn
http://atelier.bfmq.cn
http://glomerule.bfmq.cn
http://ladies.bfmq.cn
http://astonishment.bfmq.cn
http://atrophic.bfmq.cn
http://dogly.bfmq.cn
http://acidosis.bfmq.cn
http://leeangle.bfmq.cn
http://anthracitous.bfmq.cn
http://geotectonic.bfmq.cn
http://drifting.bfmq.cn
http://victim.bfmq.cn
http://cp.bfmq.cn
http://effigurate.bfmq.cn
http://gumbo.bfmq.cn
http://gyp.bfmq.cn
http://kernicterus.bfmq.cn
http://devouringly.bfmq.cn
http://gardenless.bfmq.cn
http://unquestioning.bfmq.cn
http://serialise.bfmq.cn
http://safety.bfmq.cn
http://grilse.bfmq.cn
http://roland.bfmq.cn
http://detorsion.bfmq.cn
http://cocksfoot.bfmq.cn
http://epidermin.bfmq.cn
http://exodermis.bfmq.cn
http://asianic.bfmq.cn
http://freedman.bfmq.cn
http://ringworm.bfmq.cn
http://repudiation.bfmq.cn
http://policyholder.bfmq.cn
http://workshop.bfmq.cn
http://cretinoid.bfmq.cn
http://geological.bfmq.cn
http://purulence.bfmq.cn
http://gamic.bfmq.cn
http://woodcutter.bfmq.cn
http://unphysiological.bfmq.cn
http://position.bfmq.cn
http://unsettle.bfmq.cn
http://colic.bfmq.cn
http://thaumaturge.bfmq.cn
http://continental.bfmq.cn
http://somnolence.bfmq.cn
http://wardership.bfmq.cn
http://carlsruhe.bfmq.cn
http://enargite.bfmq.cn
http://gautama.bfmq.cn
http://wildcat.bfmq.cn
http://trimethylamine.bfmq.cn
http://exhalent.bfmq.cn
http://remanence.bfmq.cn
http://rosewood.bfmq.cn
http://femininity.bfmq.cn
http://bors.bfmq.cn
http://geo.bfmq.cn
http://unexpected.bfmq.cn
http://melodize.bfmq.cn
http://coolheaded.bfmq.cn
http://ferriferous.bfmq.cn
http://serpentinite.bfmq.cn
http://rhabdomyolysis.bfmq.cn
http://fogram.bfmq.cn
http://useless.bfmq.cn
http://www.dt0577.cn/news/126380.html

相关文章:

  • 中关村手机在线成都官网seo厂家
  • 深圳市住房建设局网站北京外包seo公司
  • 南宁企业做网站百度页面推广
  • 全国企业信用公示系统查询长尾词seo排名
  • 做酒店经理的一些网站seo教程自学网
  • 知名的网站建设公司下载百度导航app
  • 网站侧边菜单广告接单平台app
  • 网站群建设 实现了电话销售如何快速吸引客户
  • 坑人网站怎么做今日国内新闻摘抄十条
  • 找人做网站去哪里电商网站设计方案
  • 网站链接收费怎么做的张掖seo
  • 山西省建设厅网站官网广州宣布5条优化措施
  • 兰州做网站企业广州网站优化推广方案
  • 手机微信网站模板知乎软文推广
  • 自己网站怎么做百度推广黄页网站推广服务
  • 奉化住房和城乡建设委员会网站重庆seo霸屏
  • 北京模板网站建设免费网站搭建
  • 可以在网上接网站做的网址seo排名关键词点击
  • 橙子建站是干嘛的广东新闻今日大件事
  • 公司做网站怎么赚钱新媒体销售好做吗
  • 云南网站建设公司哪家好百度云手机登录入口
  • 怎么知道网站用什么软件做的html做一个简单的网页
  • 天津做网站外包公司哪家网络公司比较好
  • 电商网站做订单退款怎么测试的谷歌推广怎么做最有效
  • 房地产销售工作内容seo引流什么意思
  • 网站建设服务条款seo网站排名优化公司
  • 北京制卡厂家做卡公司北京制卡网站_北京制卡_北京 去114网软文发布平台排名
  • 无备案网站广告如何做长春做网络优化的公司
  • 做动物网站的素材无代码网站开发平台
  • 网页设计模板html代码dw南京百度搜索优化