当前位置: 首页 > Web前端 > HTML5

Vue父组件给子组件传值,数据在子组件中修改,父组件获取最新值

时间:2023-04-05 22:55:26 HTML5

在VUE项目中,组件嵌套使用时,往往需要通过彼此的价值观。使用的方法也不奇怪以下两种:父组件通过属性给子组件传值,子组件使用props接收数据。父组件:子组件:2、子组件将子组件内部的数据通过$emit方法发送给父组件,并将值要传递的作为$emit的第二个参数,该值将作为实际参数传递给响应自定义事件的方法父组件:子组件:3.另外,兄弟组件直接通过总线传值,简直是new视图()。由于Vue没有直接子传参的方式,所以建议将需要传递数据的子组件,都合并到一个组件中。如果必须在子组件之间传递参数,可以先传给父组件,再传给子组件。或者使用eventBus或者vuex(页面少的小项目使用eventBus,页面多的大项目使用vuex)。4.而.sync只是上述方法的语法糖。但是在实际的开发过程中,遇到了一个特殊的场景需求。父组件请求接口,获取到的初始数据发送给子组件。子组件中修改表单后,父组件执行提交操作,子组件通过tabs切换,也封装了keep-live。经过多次尝试和探索,将组件切换为v-bind:is,找到了一个很好的解决方案。父组件:<脚本>从“@/aComponent”导入aComponent;导入bC来自“@/bComponent”的组件;从“@/cComponent”导入cComponent;导出默认{组件:{aComponent,bComponent,cComponent},数据(){返回{标签:[{名称:'AAA',别名:'aaa',relationComponent:'aComponent',},{name:'BBB',别名:'bbb',relationComponent:'bComponent',},{name:'CCC',别名:'ccc',relationComponent:'cComponent',},],data:{aChildData:{},bChildData:{},cChildData:{}}},created(){this.getData()},method:{getData(){//接口请求之前保存的数据this.$api.funy({id:'123457'},response=>{if(response){this.data.aChildData=响应;this.currentTab='aaa';this.$refs['aComponent'][0].localAssign();}},fal=>{});},submit(){//组件内修改数据可以通过如下方法获取,并在父组件中提交letachild=this.$refs['aComponent'][0].sogalocal}}};子组件aComponent: