【无标题】

vue2高级

bus传参

//导入vue
import Vue from 'vue';
// 创建vue实例
var bus = new Vue();
//导出实例
export default bus

先创建一个通用工具bus
bus. o n ( “事件名” , 事件值 ) 监听事件 b u s . on(“事件名”,事件值) 监听事件 bus. on(事件名,事件值)监听事件bus.emit(‘事件名’,事件值) 发送事件
监听事件

created() {
			//监听colorchange事件,动态改变bg
			bus.$on("colorchange", $event => {
				this.bg = $event
			})
		}

发送事件

methods:{
			setColor(data){
				bus.$emit('colorchange',data)
			}
		}

通过给button添加单击事件触发

<button @click="setColor('red')"></button>
<button @click="setColor('green')">绿</button>
<button @click="setColor('blue')"></button>

2.跨组件传参
bus传参
$parent 父组件
$root 根组件
$refs.myref dom引用
vuex
cookie/localStorage/sessionStorage

3.v-model
v-model=“w” 是一种vue语法简写形式 :value=“w” @input=“w=$event”

<SteperView :value="w" @input="w=$event"></SteperView><br>
<SteperView v-model="w"></SteperView>

在组件里面

export default{
		data(){
			return{
				count:this.value,
			}
		},
		props:{
			value:{type:Number,default:1}
		},
		watch:{
			'count':{
				handler(){
					this.$emit('input',this.count)
				},
				deep:true
			},
			'value':{
				handler(){
					this.count = this.value
				},
				deep:true
			}
		}
	}

如果用除:value input以外,可以通过如下方式

<SteperView2 :num="w" @change="w=$event"></SteperView2>
<SteperView2 v-model="w"></SteperView2>
export default{
		data(){
			return{
				count:this.num,
			}
		},
		model:{
			prop:"num",
			event:"change"
		},
		props:{
			num:{type:Number,default:1}
		},
		watch:{
			'count':{
				handler(){
					this.$emit('change',this.count)
				},
				deep:true
			},
			'num':{
				handler(){
					this.count = this.num
				},
				// deep:true
			}
		}
	}

4.nextTick数据更新,等待dom更新执行回调函数
5.set强制更新
遵循vue双向绑定原理
数据更新,视图更新=》视图更新,数据更新
数据和视图的桥梁是:vue指令
原理:通过object.definePropery 劫持对象的getter获取,setter设置
实现数组的更新,重新数据的方法原型来执行, push,pop,split
vue3双向绑定 使用proxy代理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值