前端面试题汇总
JavaScript
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
性能
linux
前端资料汇总
<button @click="setTime">点击我获取父组件的方法</button>
</div>
父组件
效果图

改变后

详情可看官网[自定义事件](https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
在父组件向子组件传递数据时,若是该数据为对象或数组,并且该对象或数组在父组件内部被修改,则 Vue 不会检测到。这种情况下,我们需要在父组件中设置一个临时变量来保存修改后的对象或数组,并将其传递给子组件。
关于父子组件传值遇到的坑可以看[vue修改父组件传值报错](https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
## 三、兄弟之间通过bus
父组件引入两兄弟
兄弟组件二号
我是2号兄弟组件
{{ name }}
注:用bus传值,父组件引入子组件,子组件需要传值的用Bus.
e
m
i
t
(
)
,接收方用
B
u
s
.
emit(),接收方用 Bus.
emit(),接收方用Bus.on()。
最后看效果图

改变后

## 四、其它方式传值传值
### 父孙传值
##### $attrs(向下)
官网是这么解释的

意思就是孙子组件的传值问题可以选择不使用props传值而通过$attrs传递
部分代码
//父组件
//子组件
//孙子组件
打印结果

##### $listeners(向上)
官网是这么解释的

$listeners可以将孙组件的事件和参数传递给父组件
//父组件
<compOne
v-on=“$listeners”
@compOneChild=“compOneChild”/>
//子组件
//孙子组件
打印结果

### provide/inject
**官网概念**:
这对选项需要一起使用,以允许一个**祖先组件**向其**所有子孙**后代注入一个依赖,不论组件层次有多深,并在其上下游关系成立的时间里始终生效。

官网链接[provide / inject](https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
用法举例
//祖先组件(刚登陆首页的组件)
data() {
return {
userName: “李潇潇”,
};
},
provide() {
return {
newName: () => this.userName,
};
},
//子孙组件(随便跳转详情的组件)
inject: [“newName”],
mounted() {
console.log(this.newName());
console.log(this.userName());
},
methods: {
userName() {
return this.newName();
},
}

最后看跳转子孙的打印值

### parent/children
官网是这么介绍的

所以尽量少用,了解一下就行了。
## 五、VUEX传值
在使用VUEX时先弄懂几个概率。
**VUEX是用来干嘛的?**
答:vuex是一个状态管理工具存储应用所有组件的状态。
构成:
* **state**:vuex的基本数据,用来存储变量。
* **mutations**:提交更改数据,同步更新状态。
* **actions**:提交mutations,可异步操作。
* **getters**:是store的计算属性。
* **modules**:模块,每个模块里面有四个属性。
用官网上的一张图来展示vuex工作的流程
了解更多VUEX知识 可看官网[What is Vuex?](https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
实现的功能:有两个组件A和B,有一个公共的名字(默认为UZI),想要使组件A改变名字,组件B名字也改变为一样的,组件B改变反之A也改变。

这是文件目录,为了方便后期管理将store下面新建文件夹与文件,每个文件管理一个或几个状态,这里name.js管理name

store下面的index.js代码
import Vue from ‘vue’
import Vuex from ‘vuex’
import name from ‘./name/name’
Vue.use(Vuex)
export default new Vuex.Store({
modules: {
name,
}
})
name.js代码
const state = { //基本数据,变量
userName: “UZI” //默认值
}
const actions = { //提交mutations
前端面试题汇总
JavaScript
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
性能
linux
前端资料汇总