父子组件通信传值双向绑定
时间: 2025-02-13 20:04:06 浏览: 38
### Vue 中父子组件间的双向绑定
在 Vue 中,可以通过 `v-model` 和自定义事件来实现父子组件间的数据双向绑定。具体来说:
- 子组件可以接收来自父组件的属性值并将其作为本地数据处理;
- 当子组件内部状态发生变化时,通过 `$emit()` 方法触发一个自定义事件通知父组件更新相应属性。
#### 父组件代码示例
```vue
<template>
<div class="parent">
Parent Component Value: {{ parentValue }}
<child-component v-model="parentValue"></child-component>
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
components: { ChildComponent },
data() {
return {
parentValue: 'Initial value'
};
}
};
</script>
```
#### 子组件代码示例
```vue
<template>
<input :value="modelValue" @input="$emit('update:modelValue', $event.target.value)" />
</template>
<script>
export default {
props: ['modelValue']
};
</script>
```
这种方式使得当输入框内的文本改变时,不仅会影响自身的显示内容,还会同步更改父级组件中的变量值[^1]。
### React 中父子组件间的双向绑定模拟
虽然 React 默认支持单向数据流,但这并不意味着完全不能实现类似于 Vue 的双向绑定效果。一种常见的做法是在父组件中管理状态,并将该状态以及用于更新此状态的方法一起传递给子组件。
#### 使用函数式组件与 Hooks 实现
##### 父组件 (ParentComponent.js)
```jsx
import React, { useState } from "react";
import ChildComponent from "./ChildComponent";
function ParentComponent() {
const [text, setText] = useState("Default Text");
return (
<>
<p>Text in Parent: {text}</p>
<ChildComponent text={text} onTextChange={setText} />
</>
);
}
export default ParentComponent;
```
##### 子组件 (ChildComponent.js)
```jsx
const ChildComponent = ({ text, onTextChange }) => {
return (
<input type="text" value={text} onChange={(e) => onTextChange(e.target.value)} />
);
};
export default ChildComponent;
```
在这个例子中,每当用户编辑 `<input>` 字段的内容时,都会调用由父组件传入的回调函数 `onTextChange` 来更新父组件的状态,从而实现了类似双向绑定的效果[^2]。
阅读全文
相关推荐


















