vue.js学习笔记(六)--利用v-model实现父子组件间的双向通信

xiaoxiao2021-02-28  139

博客:https://fisher-zh.github.io/

在Vue中,我们可以使用prop属性来进行父子组件间的通信,在之前的文章Vue踩坑之路–父子组件通信总结中有介绍过。

但是prop 是单向绑定的,我们无法在组件中直接修改prop传递的属性。

prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。这是为了防止子组件无意修改了父组件的状态——这会让应用的数据流难以理解。 另外,每次父组件更新时,子组件的所有 prop 都会更新为最新值。这意味着你不应该在子组件内部改变 prop。如果你这么做了,Vue 会在控制台给出警告。官方文档解释

当然我们可以通过emit在子组件中触发某些事件从而在父组件中修改该数据,这种方法肯定不是最理想的。

在Vue中,能够进行数据双向绑定的属性,我们应该最先想到的是v-model,绑定input的value值,当我们修改value值的同时能够改变数据。那么我们能不能利用v-model这一特点来实现父子组件间某些数据的双向绑定呢? 当然能! 要不我写这个干什么(逃…)

<div> <child v-model="message"></child> <!-- 通过v-model将message绑定在child上 --> </div> // 子组件 export default { name: '', props: { // 通过value获取绑定message值 value: { type: String, default: '' } }, data: { // 你的数据 }, methods: { changeMessage() { // 通过触发组件的input事件改变message的值, // 此时父组件中的message值就改变为你设置的值了 this.$emit('input', 'your message value') } } })
转载请注明原文地址: https://www.6miu.com/read-26146.html

最新回复(0)