问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在Vue2中实现组件props双向绑定

发布网友 发布时间:2022-04-22 06:50

我来回答

1个回答

热心网友 时间:2022-04-22 11:43

1. 在组件内的data对象中创建一个props属性的副本
因为result不可写,所以需要在data中创建一个副本myResult变量,初始值为props属性result的值,同时在组件内所有需要调用props的地方调用这个data对象myResult。
Vue.component("switchbtn", {
template: "<div @click='change'>{{myResult?'开':'关'}}</div>",
props: ["result"],
data: function () {
return {
myResult: this.result//data中新增字段
};
},
......
});

2. 创建针对props属性的watch来同步组件外对props的修改
此时在组件外(父组件)修改了组件的props,会同步到组件内对应的props上,但是不会同步到你刚刚在data对象中创建的那个副本上,所以需要再创建一个针对props属性result的watch(监听),当props修改后对应data中的副本myResult也要同步数据。
Vue.component("switchbtn", {
template: "<div @click='change'>{{myResult?'开':'关'}}</div>",
props: ["result"],
data: function () {
return {
myResult: this.result
};
},
watch: {
result(val) {
this.myResult = val;//新增result的watch,监听变更并同步到myResult上
}
},
......

3. 创建针对props副本的watch,通知到组件外
此时在组件内修改了props的副本myResult,组件外不知道组件内的props状态,所以需要再创建一个针对props副本myResult,即对应data属性的watch。
在组件内向外层(父组件)发送通知,通知组件内属性变更,然后由外层(父组件)自己来变更他的数据
最终全部代码:
<div id="app">
<switchbtn :result="result" @on-result-change="onResultChange"></switchbtn>
<input type="button" value="change" @click="change">
</div>

Vue.component("switchbtn", {
template: "<div @click='change'>{{myResult?'开':'关'}}</div>",
props: ["result"],
data: function () {
return {
myResult: this.result//①创建props属性result的副本--myResult
};
},
watch: {
result(val) {
this.myResult = val;//②监听外部对props属性result的变更,并同步到组件内的data属性myResult中
},
myResult(val){
//xxcanghai 小小
this.$emit("on-result-change",val);//③组件内对myResult变更后向外部发送事件通知
}
},
methods: {
change() {
this.myResult = !this.myResult;
}
}
});

new Vue({
el: "#app",
data: {
result: true
},
methods: {
change() {
this.result = !this.result;
},
onResultChange(val){
this.result=val;//④外层调用组件方注册变更方法,将组件内的数据变更,同步到组件外的数据状态中
}
}
});

至此,实现了组件内数据与组件外的数据的双向绑定,组件内外数据的同步。最后归结为一句话就是:组件内部自己变了告诉外部,外部决定要不要变。
如何在Vue2中实现组件props双向绑定

1. 在组件内的data对象中创建一个props属性的副本 因为result不可写,所以需要在data中创建一个副本myResult变量,初始值为props属性result的值,同时在组件内所有需要调用props的地方调用这个data对象myResult。Vue.component("switchbtn", { template: "{{myResult?'开':'关'}}",props: ["result"]...

如何在 Vue2 中实现组件 props 双向绑定

从父组件传入 v-model 子组件通过 value 接收参数 子组件通过 this.$emit('input', newValue) 同步 v-model 的值

vue2.0中的render函数怎么实现双向数据绑定

一,先创建一个叫eventbus的vue对象,什么配置都不需要,就只是拿来做一个event bus而已。第二,因为组件的props不允许更改,所以呢要用另一个变量来作为中转,也就是呢,组件不能用functional为true了。然后组件里头定义了个currentValue,绑定在props定义的value,这样:data: function() { return {...

vue 自定义组件使用v-model

v-model 是 Vue2 中唯一支持双向绑定的指令,用于表单控件绑定,但不代表它只能用在表单控件之上。在文档 使用自定义事件的表单输入组件 一节中提到了, v-model 其实是个语法糖。这不过是以下示例的语法糖:也就是说,你只需要在组件中声明一个name为value的props,并且通过触发input事件传入一个...

Vue组件的使用之props

动态绑定props值的灵活性在于,你可以使用v-bind属性来动态设置props的值。同时,注意props的命名规范,如驼峰命名法,其大小写形式需要匹配,这样在开发过程中,Vue会通过告警机制帮助你发现和纠正可能的错误。最后,详细定义props的好处是显而易见的,它不仅清晰地展示了组件的接口,便于他人理解使用,而且...

如何操作vue组件使用props传递数据

1.1字符串数组: &lt;my-component4 message="数据来自父组件"&gt;&lt;/my-component4&gt; Vue.component('my-component4',{ props: ['message'], template: '{{message}}'});var app4 = new Vue({ el: '#app4'});渲染后的结果为:props 中声明的数据与组件data 函数return 的数据主要区别就是pr...

vue使用props在组件中传输和接收参数

1、在组件中使用props选项定义数据,接收参数;2、在路由中,使用props选项来进行设置,路由中的props有三种模式:a、布尔模式:props设置为true,可接收params方式的参数传递;{ path:"bjc/:name/:price",//定义其属性 component:Bjc,props:true },接收参数:props: { keyword: { type: String,defaul...

vue2.0组件之间通信(父子、子父、平级)

在Vue 2.0中,组件间通信是构建动态和交互性强的应用的关键。通信方式主要包括父传子、子传父以及兄弟组件间的传递。当不使用Vuex时,我们可以利用Vue的内置特性实现这些通信。在实现父子组件通信时,首先需要在子组件中定义一个接收属性,例如通过在props中创建一个名为message的属性。接着,在父组件中...

Vue组件的props配置,让组件能够接收外部传入数据

接下来,我将通过一个School组件的实例来具体展示如何实现这一需求。School.vue 在List组件中,我们不能将数据定义死,而是应该将其定义在props参数中。List组件在这里可以看作是一个“抽象基类”,我们可以继续继承它的模板,但不要将数据写死。因此,我们尽量将用到的数据全部放在props中。如果我们需要...

vuecomponent动态组件传值?

vue父组件向子组件传值props子组件改变父组件的值emit1、父组件向子组件传值,可以通过绑定属性传值;子组件通过props接收父组件传值。父组件:子组件:子组件通过$emit触发一个自定义事件,将更新的数据传给父组件。2、vue的组件间传值可分为以下几种情况:父子组件间的传值:通过props传值。父组件...

Vue子组件定义props react子组件能修改props vue子组件改变props vue子组件获取props vue父子组件传值props vue子组件监听props props多个组件传递 props子组件改变 render props
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
超价观念与固执的区别 阅读摘录24—超价观念 超价观念是不是就是错误观念? 超价观念是一种什么观念? ...把成语补写完整再和右边相应的水果连一连什么小口 227亿的嗓子怎么来的 哪些卡通人物受到孩子们的喜爱? 别再叫我"讴歌王"了!长安UNI-T打响冲击高端首战 现在又没有九寨沟旅游的专列啊 北京丰台车站附近景点_北京清河站附近有什么景点吗 湖北有哪些适合旅游的城市???? Vue父传子prop怎么写? 湖北十堰旅游攻略景点必去 Vue2 父子组件props传数组 怎么双向绑定 vue组件可以通过props传递吗 武汉有哪些旅游攻略景点? VUE父组件model改变后,传入子组件的props为什么没... vue props里可以传递方法吗 Vue.js props方法给子组件传递数据要怎么做 vue的props用小驼峰更规范吗? vue局部组件怎么通过props传值 如何用excel做服装进出货明细表 用EXCEL做服装的进销存表格,并自动统计各商品库存... 怎么用Excel做服装厂辅料出入库明细表格,可以自动... 服装订单转换工具或者EXCEL转换方法 我想用EXCEL做一个服装销存表格 EXCEL中怎样设置订单完成情况表格 请问怎么做Excel服装库存表格 excel服装进销存表 如何用excel文档制作服装库存表格 如何在 Vue2 中实现组件 props 双向绑定 准备去湖北旅游三天,有什么样的旅游攻略推荐呢? 湖北自驾游有什么好玩的旅游景点推荐?湖北最受欢迎... 湖北有什么值得打卡的旅游景点? 湖北省有哪些风景名胜区? 屯了好多碧然德的滤芯,滤芯的保质期有多久啊? 家用净水机的滤芯多长时间应该要更换的? 净水器滤芯多长时间更换一次? 自来水与饮水机 超纯水设备滤芯耗材的使用期限为多久? 家用净水机滤芯多长时间应该更换? 净水器滤芯多长时间需要更换,长期饮用桶装水有什... 什么叫反渗透纯水机,家庭用要如何安装 纯净水设备需要多久更换一次滤芯 净水壶滤芯多久换一次 家用反渗透纯水机的滤芯一般多久需要更换一次 净水器滤芯更换时间一般是多久呀? 家里用的净水器要多长时间换滤芯 饮水机滤芯过期了,但用的是纯净水,,可以用吗 二级反渗透膜能用多久?