react如何实现双向绑定

React 本身没有内置双向绑定 ,它默认是单向数据流
state → 视图

视图要改回 state,必须手动写事件监听

所谓 React 的双向绑定,就是自己把"数据到视图"+"视图到数据"封装起来

一、最简实现(原生 React)

jsx 复制代码
function App() {
  const [value, setValue] = useState('')

  return (
    <input
      value={value}
      onChange={(e) => setValue(e.target.value)}
    />
  )
}

这就是 React 版双向绑定

  • 数据 → 视图:value={value}
  • 视图 → 数据:onChangesetValue

二、封装成类似 v-model 的工具

你可以封装一个自定义 Hook,实现像 Vue 一样简洁:

jsx 复制代码
function useModel(initialState) {
  const [value, setValue] = useState(initialState)
  return {
    value,
    onChange: e => setValue(e.target.value)
  }
}

// 使用
function App() {
  const username = useModel('')

  return <input {...username} />
}

这样就和 v-model="username" 几乎一样用。

三、React 18 官方:useImperativeHandle 不算

真正 React 里:

  • 没有 v-model 指令
  • 没有自动双向绑定
  • 一切都是**受控组件(Controlled Component)**手动实现

四、和 Vue 对比

Vue React
双向绑定 v-model 内置指令 无内置,手动 value + onChange
数据流 天然双向 单向数据流,手动实现双向
简洁度 极简洁 稍繁琐,但更可控

五、面试标准答案

  1. React 没有内置双向绑定 ,遵循单向数据流
  2. 通过受控组件 实现双向绑定:
    • value 绑定 state
    • onChange 事件更新 state
  3. 可以封装自定义 Hook 简化写法,达到类似 v-model 的效果。
相关推荐
kyriewen5 小时前
AI 写的 React 组件,合并前必查的 6 个坏味道——每个都有代码对比
前端·javascript·react.js
多加点辣也没关系5 小时前
JavaScript|第13章:原始类型的方法
开发语言·javascript·ecmascript
এ慕ོ冬℘゜5 小时前
深入理解 JavaScript 事件体系:Window、鼠标与键盘事件详解
开发语言·javascript·okhttp
摇滚侠7 小时前
SpringBoot3+Vue3 全套视频教程 45-51
前端·javascript·vue.js
触底反弹7 小时前
🔥 RAG 到底是怎么工作的?掰开揉碎了给你讲明白!
javascript·人工智能·后端
Hilaku8 小时前
前端大裁员背后的恐慌:我们还剩什么底牌?
前端·javascript·程序员
云空8 小时前
《Three.js 3D实例大全》
开发语言·javascript·3d·three.js
云空9 小时前
《Three.js 3D坦克对战【AI单机版】》
javascript·人工智能·3d·three.js
默_笙9 小时前
🚲 手写一个"Claude Code":我用 LangChain + ReAct 循环,让 AI 自己读文件、解释代码
前端·javascript
光影少年9 小时前
RN适配方案:屏幕适配、分辨率适配、刘海屏/全面屏适配
react native·react.js·掘金·金石计划