vue2高级

bus传参

利用vue空实例实现跨页面跨组件传参方式

创建空白的vue对象并导出

import vue from "vue";
var bus = new vue();
export default bus;

监听事件
bus.$on("colorchange",e=>{})
添加事件
bus.$emit("colorchange",'red')
移除事件
bus.$off("移除监听")

跨组件传参

//1.bus传参
//2.$parent 父组件
//3.$root 根组件
//4.$refs.myref dom引用
<button @click="$parent.bg='yellow'"></button>
		<button @click="$parent.bg='green'">绿</button>
		<button @click="$parent.bg='blue'"></button>
		<button @click="showRoot">根节点</button>
//5.vuex
import Vue from 'vue'
import Vuex from 'vuex'
import user from "./modules/user.js"
import rank from "./modules/Rank.js"
Vue.use(Vuex)

export default new Vuex.Store({
	state: {},
	getters: {},
	mutations: {},
	actions: {},
	modules: {
		user,
		rank
	}
})
//6.cookie/localStorage/sessionStorage
SET_USER(state, data) {
			state.user = data;
			localStorage.setItem("user", JSON.stringify(data))
		},
		SET_TOKEN(state, data) {
			state.token = data;
			localStorage.setItem("token", data);
		}

v-model

//是语法糖,简写模式
:value="w" @input="w=$event"
v=model="w"
//在组件中指定v-model
model:{
    prop:"num",
    event:"change"
}
<SteprView v-model="w"></SteprView>
		<SteprView :value="w" @input="w=$event"></SteprView>

nextTick

数据更新,等待dom更执行回调函数

set 强制更新 this.$set

changeIt() {
				// this.list[2] = "js";
				// 强制更新
				this.$set(this.list, 2, "js");
				// this.list.splice(2,1,"js");
				console.log(this.list);

				// vue双向绑定原理,数据更新,视图更新,视图更新,数据更新  
				// 数据和视图的桥梁是:vue指令

				// 原理:通过Object.definePropery 劫持对象的getter获取,setter设置

				// 实现数组的更新,重新数组的方法原型来执行 ,push,pop,split

				// vue3双向绑定 使用 proxy代理
			}

混合 Vue.mixin

// 全局的,每个组件创建完毕输出自己,和当前时间
Vue.mixin({
	data(){
		return {
			mynum:15,
		}
	},
	created(){
		console.log(this._uid,Date.now(),this);
	}
})
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值