组件之间的通信(子组件-改变父组件的值)

在vue中,组件之间的通信,是不建议子组件改变父组件的值,因为一个父组件有可能会有很多子组件,改来改去会很难管理(别人都这样说,我信)

试试:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src=‘../vue.js‘>    </script>
    </head>
    <body>
        <div id="app">
            <son :son-counter="counter"></son>
            <p>parent:<input type="text"  v-model="counter"/></p>
        </div>
    </body>
</html>
<script>
    const son={//创建子组件的模板
        template:`<div>son:<input  v-model="sonCounter"  /></div>`,
        props:[‘sonCounter‘],     //props:{sonCounter:Number/Array/Object/String}...当然我们也可以在子组件中限制,父组件传过来的值类型 
    };

    var app=new Vue({
        el:‘#app‘,
        data:{
            counter:0,
        },
        components:{
            son
        }

    });

</script>

当我们改变parent这个输入框中的值时,son对应的输入框的值,也会发生变化,但是反过来,就不行了。

这是他给我的waring,(英文不好的,可以假装不懂,),只知道有个错。

换个方法试试:

这里不具体讲解组件的创建了。

具体思路:

1)在子组件中触发事件,将事件派送给父组件,然后父组件来监听。

2)父组件监听事件,改变值。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="../vue.js"></script>
    </head>
    <body>
        <div id="app">
            <my-component @inc="increment" :counter=‘counter‘></my-component>
            <p>{{counter}}</p>
        </div>
    </body>
</html>
<script>

//全局注册一个组件
        Vue.component("my-component",{
        template:‘<div>this is son component <button @click="inc">增加</button> </br><span>{{counter}}</span></div>‘,
        props:["counter"],//子组件的props属性一般用于接收父组件的值
        methods:{
            inc:function(){
                this.$emit("inc");//$emit的作用就是将事件进行向上派发
            }
        }
    });
    var app=new Vue({
        el:"#app",//指定挂载元素
        data:{
            counter:0,
        },
        methods:{
            increment(){
                this.counter++;
            }
        }
    });
</script>
时间: 2024-10-11 18:20:11

组件之间的通信(子组件-改变父组件的值)的相关文章

vue组件之间的通信以及如何在父组件中调用子组件的方法和属性

在Vue中组件实例之间的作用域是孤立的,以为不能直接在子组件上引用父组件的数据,同时父组件也不能直接使用子组件的数据 一.父组件利用props往子组件传输数据 父组件: <div> <child v-bind:my-message="parentMsg"></child>//注意传递参数时要用-代替驼峰命名,HTML不区分大小写 </div> 子组件: Vue.component('child', { // camelCase in Ja

vue 子父组件之间的通信,及在调用组件的地方

这里是用了 element ui 你们也可以看一下管方的文档 http://element.eleme.io/#/zh-CN/component/installation 组件html <div class="Hander"> <el-row :gutter="20"> <el-col :span="4"><div class="back" @click="Back"

子页面是iframe框架中 子页面改变父页面的值

<script type="text/javascript"> window.onload = function () { parent.document.getElementById('SupName').text = $("#txtName").val(); } </script>

react native 之子组件和父组件之间的通信

react native开发中,为了封装性经常需要自定义组件,这样就会出现父组件和子组件,那么怎么在父组件和子组件之间相互通信呢,也就是怎么在各自界面push和pop.传值. 父组件传递给子组件: 父组件: 在主组件里面,使用通过写一个子组件的属性,直接把值或者navigator传给子组件即可.如下20行: 1 /** 2 * Sample React Native App 3 * https://github.com/facebook/react-native 4 * 父组件传递给子组件 5

Vue 组件&amp;组件之间的通信 之 子组件向父组件传值

子组件向父组件传值:子组件通过$.emit()方法以事件形式向父组件发送消息传值: 使用步骤: 定义组件:现有自定义组件com-a.com-b,com-a是com-b的父组件: 准备获取数据:父组件com-a要获取子组件data中的height属性: 在子组件com-b中,需要用$.emit()方法将数据以事件的形式发送,$.emit('sendData', data, data…),红色的部分事件名可自定义,数据可传递多个: 在父组件中使用子组件的地方 <com-b @自定义事件名='getD

react 实现组件嵌套以及子组件与父组件之间的通信

当子组件触发onChange事件时,实际调用的是父组件中的handelSelect函数,通俗来说就是父组件通过属性handleSelect实现与子组件之间的通信. 父组件:SignupForm 子组件:GenderSelect 渲染:

子组件如何改变父组件的state

子组件调用父组件的方法,从而改变父组件中state中的值 //父组件 change (value) { console.log(value) this.setState({ red: value.red }) console.log(this.state) } render () { return ( <> {this.state.red && this.state.red == 1 ? ( <div>red == 1</div> ) : null} &

React 组件基本使用(3) ---父子组件之间的通信

当有多个组件需要共享状态的时候,这就需要把状态放到这些组件共有的父组件中,相应地,这些组件就变成了子组件,从而涉及到父子组件之间的通信.父组件通过props 给子组件传递数据,子组件则是通过调用父组件传给它的函数给父组件传递数据. 很简单的一个例子,我们在输入框中输入温度,输入框下面显示冷和热.这里就有两个组件,输入框和它下面的显示内容,且它们共享一个状态,就是温度.所以我们要把温度这个状态放到这两个组件的父组件中.这里就有三个组件,一个输入框TemperatureInput,  一个是显示内容

Vue.js组件之间的通信

导语:组件之间的关系不外乎两种, 父子组件和非父子组件,本文将对两类组件之间的通信方式进行详细阐述. 父子组件间的通信 通信方式1(单向绑定): Props down, Events up (建议使用) Props down, Events up 是指 使用props向子组件传递数据,父组件属性发生变化时,子组件可实时更新视图:子组件发生变化,可以使用$emit发送事件消息,以此向父组件传递变化消息. props 是单向的,当父组件的属性变化时,将传递给子组件,但子组件中的props属性变化不会