千家信息网

vue中如何自定义组件传值

发表于:2024-10-12 作者:千家信息网编辑
千家信息网最后更新 2024年10月12日,这篇文章主要讲解了"vue中如何自定义组件传值",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"vue中如何自定义组件传值"吧!自定义组件传值常规prop
千家信息网最后更新 2024年10月12日vue中如何自定义组件传值

这篇文章主要讲解了"vue中如何自定义组件传值",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"vue中如何自定义组件传值"吧!

自定义组件传值

常规prop-event

父组件

子组件

需要注意:不要直接在子组件内操作父组件的内容

组件实例的作用域是孤立的。每次父组件更新时,子组件的所有 prop 都会更新为最新值。这意味着不能 (也不应该) 在子组件的模板内直接引用父组件的数据。如果你这么做了,Vue 会在控制台给出警告。

export default { name: 'prop-event', props: ['address'], watch: { address(newVal) {  this.$emit('update', newVal) } }}

如将上述代码替换子组件,内容会报错!

修饰符.sync

父组件

子组件

prop-update:[prop]语法糖,与prop-event对比的优势:父组件无需监听事件@update="val => address = val",自动监听update:[prop]事件。

双向数据绑定v-model

所以要让组件的 v-model 生效,它应该 (从 2.2.0 起是可配置的):

接受一个 value prop

在有新的值时触发 input 事件并将新值作为参数

父组件

子组件

prop-input语法糖,父组件v-model默认监听input事件

需要注意,这里必须触发input事件,当然也可以自定v-model属性值和事件,请参照自定义组件的v-model

vuex

通过store传值,这里后续单独讲述vuex。

单向数据流

上述已经提及,在子组件内部改变 prop,Vue会在控制台给出告警。但经常开发周静,我们很容易忍不住修改prop中的数据,如:

Prop 作为初始值传入后,子组件想把它当作局部数据来用;

Prop 作为原始数据传入,由子组件处理成其它数据输出。

对这两种情况,正确的应对方式是:

问题1:定义一个局部变量,并用 prop 的值初始化它:

props: ['initialCounter'],data: function () { return { counter: this.initialCounter }}

问题2:定义一个计算属性,处理 prop 的值并返回:

props: ['size'],computed: { normalizedSize: function () { return this.size.trim().toLowerCase() }}

感谢各位的阅读,以上就是"vue中如何自定义组件传值"的内容了,经过本文的学习后,相信大家对vue中如何自定义组件传值这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0