vue中父子传参
在 Vue 中,父组件向子组件传递数据需要使用 props,子组件通过 props 接收父组件传递的数据。这种方式是单向数据流,父组件可以通过修改 props 数据来向子组件传递新的值。
1.父组件向子组件传递静态数据
在父组件中使用 v-bind 或简写符号 “:” 将数据绑定到子组件的 props 属性上,例如:
<template>
<div>
<child-component message="Hello, Vue!" />
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent
}
};
</script>
在子组件中定义 props 属性来接收父组件传递的数据:
export default {
props: {
message: {
type: String,
required: true
}
}
};
2.父组件向子组件动态传递数据
如果需要动态传递数据,可以将父组件的数据绑定到子组件的 props 属性上,然后在父组件中修改数据来触发子组件数据的更新。例如:
<template>
<div>
<button @click="changeMessage">Change Message</button>
<child-component :message="parentMessage" />
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent
},
data() {
return {
parentMessage: 'Hello, Vue!'
};
},
methods: {
changeMessage() {
this.parentMessage = 'Hello, Vue3!';
}
}
};
</script>
在子组件中定义 props 属性来接收父组件传递的数据:
export default {
props: {
message: {
type: String,
required: true
}
}
};
需要注意的是,当父组件修改 props 数据时,子组件也会被重新渲染。如果不希望子组件受到影响,可以通过将 props 数据复制到子组件的 data 中,然后在子组件中使用 data 来操作数据。