| 对比维度 | 单向数据流 | 双向绑定 (如 v-model) |
|---|---|---|
| 数据流向 | 🔽 父 → 子 (props) 🔼 子 → 父 (事件) 严格单向 |
🔄 父子之间自动同步,数据可双向修改 |
| 可预测性 | ⭐ 高 —— 数据变更源唯一,易于追踪 | ⚠️ 中等 —— 多个修改源,复杂时难调试 |
| 调试/维护 | ✅ 清晰,每个数据变化都有明确源头 | 🔍 隐式修改,可能产生连锁副作用 |
| 适用场景 | 大型应用、复杂状态、团队协作 | 小型表单、简单交互、快速原型 |
| 典型实现 | React props + callback, Vue props + $emit | Vue v-model, Angular [(ngModel)] |
// 单向数据流示例 (React 风格)
function Parent() {
const [count, setCount] = useState(0);
const handleIncrement = () => setCount(c => c + 1);
return <Child value={count} onIncrement={handleIncrement} />;
}
function Child({ value, onIncrement }) {
// 子组件只读 value,通过回调通知父组件
return (
<div>
<p>当前值: {value}</p>
<button onClick={onIncrement}>增加</button>
</div>
);
}
✨ 状态提升后,数据流依然是单向,更易维护