飞利浦·斯塔克|Vue子组件向父组件传参(事件传参)

文章图片
1. 自定义事件除了可以处理原生的DOM事件 v-on指令也可以处理组件内部触发的自定义的事件调用this.$emit()函数就可以触发一个自定义事件$emit()触发事件函数接受一个自定义事件的事件名以及其他任何给事件函数传递的参数. 然后就可以在组件上使用v-on来绑定这个自定义事件
{
methods: {
handleClick(){
this.clicks++
this.$emit(\"count\"this.clicks )
所以我们就可以利用自定事件来处理子组件触发父组件数据的更改和向父组件传值
2. 子组件触发父组件数据的改变通过父组件向子组件传值的学习我们已经知道了Vue是单向下行数据流 子组件更改props中的数据不会触发父组件数据的改变 但是由于响应式原理父组件数据的改变会导致子组件props中值的改变
那么我们怎样才能在子组件中改变显示的结果呢.
示例代码如下:
思路:
- 子组件中没发更改父组件中的数据那么我们就让父组件自己的函数改自己的数据
- 如何在子组件中触发父组件中的函数呢 就可以通过自定义事件
- 子组件在函数中触发自定义事件 将父组件中更改数据的函数绑定为自定义事件的函数
- 然后父组件中的数据一变因为响应式所以子组件中的数据会自动改变
<div id=\"app\">
<!-- 使用组件 -->
<!-- 3.在子组件中绑定自定义事件 将父组件的方法绑定为自定义事件的处理函数-->
<my-component
:clicks=\"clicks\"
@count=\"handleParentClick\"
></my-component>
</div><!-- 组件模板 --><template id=\"MyComponent\">
<div>
被点击了{{clicks次 <!-- 1. 子组件通过原生click事件触发子组件自己的函数 -->
<button @click=\"handleClick\">点击</button>
</div></template><script>
// 组件选项对象
let MyComponent = {
props:[\"clicks\"
template: `#MyComponent`
methods:{
handleClick(){
// 2.子子组件函数中触发自定义事件
this.$emit(\"count\")
// 实例中注册组件
const vm = new Vue({
el:\"#app\"
data: {
clicks:0
components: {
\"MyComponent\": MyComponent
methods:{
handleParentClick(){
// 4. 在父组件函数中修改父组件中的数据
this.clicks++
- 飞利浦·斯塔克|华为新款手机发布,而且多款手机已在路上,难道要隆重回归了?
- 飞利浦·斯塔克|空调使用揭秘,这些小知识一定要知道
- 飞利浦·斯塔克|为什么风靡一时的滚筒洗衣机“跌下神坛”?不解决这些,终被淘汰
- 飞利浦·斯塔克|迷你主机真是智商税吗?“付费上班”的我撸了一台回来,发现比笔记本还香
- 飞利浦·斯塔克|WeChat高质量社交文案
- 飞利浦·斯塔克|苹果手机到底有没有原装中框?
- 飞利浦·斯塔克|微信你还在习惯发送原图吗?弄不好是一种错误做法,现在知道不晚
- 显示器|二代Nano IPS屏里的示范生?飞利浦275M1RZ PRO游戏显示器
- 飞利浦·斯塔克|MiniLED显示器破局者:HKC新旗舰4K+144Hz适合哪些人群
- 飞利浦|错过就没了,飞利浦279M1RVE预售到手价5199元
