🖥️ 前端经典面试题专栏:前端经典面试题 Vue组件间的通信方式
🧑💼 个人简介:一个不甘平庸的平凡人🍬✨ 个人主页:CoderHing的个人主页
🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️
👉 你的一键三连是我更新的最大动力❤️
目录
普遍的 说 三四个即可 父/子 props/emit eventBus provide/ inject 等..
简述: 父组件通过 props 向子组件传递数据,子组件通过 $emit 和父组件通信
父组件向子组件传值
- <template>
- <div class="father">
- <son :msg="msg" :fn="fatherFunction" />
- div>
- template>
-
- <script>
- import son from './sons.vue'
- export default {
- name: 'FatherPage',
- components: {
- son
- },
- data() {
- return {
- msg: '父组件数据'
- }
- },
- methods: {
- fatherFunction() {
- console.log('fatherPage')
- }
- }
- }
- script>
- <template>
- <div class="son">
- <p>父组件传递过来的值:{{ msg }}p>
- <button @click="fn">按钮button>
- div>
- template>
-
- <script>
-
- export default {
- name: 'Son',
- props: ['msg', 'fn']
- }
- script>
- <template>
- <div class="father">
- <son @clickSon="clickSonMsg" />
- div>
- template>
-
- <script>
- import son from './sons.vue'
- export default {
- name: 'FatherPage',
- components: {
- son
- },
- methods: {
- clickSonMsg() {
- console.log('子组件传递过来点击信息')
- }
- }
- }
- script>
- <template>
- <div class="son">
- <button @click="sonClick">告诉父亲被打了!button>
- div>
- template>
-
- <script>
-
- export default {
- name: 'SonPage',
- methods: {
- sonClick() {
- this.$emit('clickSonMsg')
- }
- }
- }
- script>
简述:eventBus事件总线 适合 父子组件|非父子组件等之间的通信,使用步骤如下:
简述: Vue中的依赖注入,用于 父子组件之间通信,也可用于 祖孙组件之间的通信,在层级很深的情况下,使用这种方式进行传值.
provide / inject 是Vue提供的两个钩子函数 和 data methods 是同级的 并且 provide书写跟data是一样的.
- // 在父组件中:
- provide() {
- return {
- num: this.num
- }
- }
-
- // 在子组件中:
- inject: ['num']
简述:也是实现 父子组件 之间的通信
简述: Vue引入了它们两个 可以实现 跨组件跨代通信