-
父子组件如何传值?
父传子
父组件在调用子组件的位置添加自定义属性,属性的值就是父组件传入子组件的值
在子组件配置对象,添加一个props选项,用来接收传过来的数据
注意:如果传入的值是一个非字符的数据,需要绑定属性v-bind:
选项卡默认是一个数组,数组的元素就是:父组件在调用子组件的位置定义的属性名
子传父
父组件在调用子组件的位置绑定自定义事件。
该事件的处理方式由父组件定义。方法接收的参数是子组件发过来的数据
在子组件的某个事件或行为中,使用$emit触发自定义事件,并且传递数据
事件声明是可选的,推荐声明要触发的事件
兄弟传值
自定义事件系统
在要接收数据的组件内部,通过on绑定事件(事件名,事件处理函数)
在要发送数据的组件内部,通过emit触发事件(事件名,要发的数据)
自定义事件系统:
const E = {
msg:{},
on(type, cb){
if(this.msg[type]){
this.msg[type].push(cb);
}else{
this.msg[type] = [cb];
}
},
emit(type){
if(!this.msg[type]) return;
const arg = […arguments].slice(1);
this.msg[type].forEach(val=>{
val(…arg);
})
}
} -
如何定义具名插槽?
在组件的模板内,添加一个标记,组件标签的内容渲染到slot标签的位置
在模板中的中写那么属性及名字,在子组件中用中用v-slot:a和模板中的位置对应 -
兄弟组件有哪些传值方式?
中央总线(自定义事件系统)
利用父子组件传值子A传给父,父再传给子B
借助第三方插件:mitt
4.什么是透传attribute
透传指的是:传递给一个组件,却没有被该组件的接收,就会添加到根元素上。常见的有class、style、v-on
如果一个子组件的根元素已经有了class或style,它会会合并 -
如何实现依赖注入
用于祖先组件向其所有子孙后代注入一个依赖
provide选项是一个函数,返回一个对象,对象的key为要注入的数据名,对象的value为要注入的数据
inject选项是一个数组,数组内的成员为要引入的祖先组件注入的数据名 -
如何注册全局组件:component
步骤:
创建模板:app.component(组件名,配置对象)
配置组件对象:全局的配置对象比跟的配置对象多了template。与模板产生关联 -
如何注册局部组件
步骤:
是在某个组件下使用components选项,这个选项也是一个对象{组件名:配置对象} -
什么是单向数据流
所有的props都遵循单向绑定原则,只能在父组件更新,子组件不能更新数据
改变的场景:
定义一个新的局部属性,从props上获取初始值
对基于props的值定义一个计算属性 -
什么是双向数据绑定
给输入框绑定一个输入事件
触发输入事件,修改了响应式数据
响应式数据发生了修改,触发了setter函数
在setter函数中,找使用了stter函数的DOM,修改DOM的内容
10.v-if和v-show的区别
if是真正的渲染,页面中不会出现元素
show是通过display:none来控制元素的显示和隐藏 -
计算属性和侦听器的区别
同等条件下,计算属性优于侦听器
计算属性可以更方便的解决数据计算的问题
侦听器可以针对性的监听一个数据的变化,执行相对应的功能,不只是计算数据 -
计算属性和方法的区别
属性是只有数据发生改变是才会重新执行
方法是每次都会执行 -
生命周期的状态和钩子函数
创建:beforeCreate、created
挂载:beforeMount、mounted
更新:beforeUpdata、updated
卸载:beforeUnmount、unmounted -
vue实例身上有哪些全局方法
component
mount
unmount
props -
兄弟组件如何传值
中央总线(自定义事件系统)
借助父子传值
第三方插件:mitt
03vue面试题
于 2023-01-10 21:46:46 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)