面试题答案
一键面试-
父组件:
- 在父组件的
data
函数中定义count
状态:
<template> <div> <child-component :count="count"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { count: 0 }; } }; </script>
- 通过
props
将count
传递给子组件,这里使用了v - bind
指令(:count
是v - bind:count
的缩写)。
- 在父组件的
-
子组件:
- 在子组件中定义
props
来接收父组件传递的count
:
<template> <div> <p>Count: {{ count }}</p> <button @click="incrementCount">Increment</button> </div> </template> <script> export default { props: ['count'], methods: { incrementCount() { this.$emit('count - increment'); } } }; </script>
- 这里通过
props
接收count
并在模板中显示。同时定义了一个按钮,点击按钮时触发incrementCount
方法,该方法通过$emit
触发一个自定义事件count - increment
。
- 在子组件中定义
-
父组件监听子组件事件:
- 在父组件中监听子组件触发的
count - increment
事件,并在事件处理函数中增加count
的值:
<template> <div> <child-component :count="count" @count - increment="incrementParentCount"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { count: 0 }; }, methods: { incrementParentCount() { this.count++; } } }; </script>
- 这里使用
v - on
指令(@count - increment
是v - on:count - increment
的缩写)监听子组件触发的事件,并定义incrementParentCount
方法来处理该事件,在方法中增加父组件的count
值。
- 在父组件中监听子组件触发的
主要用到的Vue特性有:
- props:用于父组件向子组件传递数据。
- $emit:子组件用于触发自定义事件。
- v - bind:用于数据绑定,这里用于将父组件数据传递给子组件。
- v - on:用于事件监听,这里用于父组件监听子组件触发的自定义事件。