当前位置: 首页 > news >正文

2025React面试题集锦

1. React 是什么?它有哪些主要特点?

React 是由Facebook开发的开源JavaScript库,用于构建用户界面(UI),尤其适合开发复杂的单页应用(SPA)。
主要特点

  • 声明式编程:只需描述UI应该是什么样子(如return <div>Hello</div>),React会自动处理DOM更新,无需手动操作DOM。
  • 组件化:将UI拆分为独立、可复用的组件(如按钮、表单),便于维护和复用。
  • 虚拟DOM:React会在内存中维护一个与真实DOM对应的虚拟DOM,通过对比虚拟DOM的差异(Diffing算法),只更新必要的部分,提升性能。
  • 单向数据流:数据通过props从父组件流向子组件,避免数据混乱,便于调试。
  • 跨平台:基于React可扩展到移动端(React Native)、桌面端(Electron)等平台。

2. 什么是JSX?

JSX(JavaScript XML)是React中用于描述UI的语法扩展,允许在JavaScript中直接编写类似HTML的代码。
特点

  • 本质是React.createElement()的语法糖,最终会被Babel编译为JavaScript对象。
  • 支持嵌入JavaScript表达式(用{}包裹),如<div>{user.name}</div>
  • 与HTML的区别:标签闭合(如<img />)、className替代class、htmlFor替代for等。
  • 示例:
    const element = <h1>Hello, {name}</h1>; // JSX语法
    // 编译后等价于:
    const element = React.createElement('h1', null, `Hello, ${name}`);
    

3. 类组件和函数组件有什么区别?

维度 类组件 函数组件
定义方式 基于ES6类,继承React.Component 普通JavaScript函数或箭头函数
状态管理 使用this.statethis.setState 依赖Hooks(如useState
生命周期 有内置生命周期方法(如componentDidMount useEffect模拟生命周期
this绑定 需要处理this指向问题(如箭头函数绑定) this,更简洁
代码风格 较繁琐,适合复杂逻辑 更简洁,推荐用于大多数场景
示例 class MyComponent extends React.Component { render() { return <div />; } } function MyComponent() { return <div />; }

现状:函数组件+Hooks已成为React主流写法,类组件逐渐被替代。

4. React中的状态(state)是什么?如何更新状态?

state 是组件内部管理的动态数据,当state变化时,组件会重新渲染。

  • 特点:私有性(仅组件内部可访问)、可变性(需通过特定方式更新)。
  • 类组件中更新:使用this.setState(),是异步操作,会触发组件重渲染。
    this.setState({ count: this.state.count + 1 }, () => {// 回调函数中可获取更新后的stateconsole.log(this.state.count);
    });
    
  • 函数组件中更新:使用useState Hook返回的更新函数,同样是异步的。
    const [count, setCount] = useState(0);
    setCount(prevCount => prevCount + 1); // 推荐使用函数形式,确保依赖前一次状态
    

5. React中的props是什么?

props(properties的缩写)是从父组件传递到子组件的数据,类似函数参数。

  • 特点:只读性(子组件不能修改props,若需修改,需由父组件更新)、单向传递(父→子)。
  • 示例:
    // 父组件
    function Parent() {return <Child name="Alice" age={18} />;
    }// 子组件
    function Child(props) {return <div>{props.name}, {props.age}</div>;
    }
    
  • 可通过PropTypes或TypeScript定义props类型,增强代码健壮性。

6. 什么是受控组件和非受控组件?

  • 受控组件:表单元素(如input、select)的值由React的state控制,通过onChange事件同步state和表单值。
    function Input() {const [value, setValue] = useState('');return <input value={value} onChange={(e) => setValue(e.target.value)} />;
    }
    
  • 非受控组件:表单元素的值由DOM自身管理,通过ref获取值,类似原生HTML。
    function Input() {const inputRef

文章转载自:

http://uVHb5uE0.yqwrj.cn
http://d1UFZxyj.yqwrj.cn
http://acVlnMqb.yqwrj.cn
http://BA48V7mF.yqwrj.cn
http://ck6DFvHt.yqwrj.cn
http://Mph7iaok.yqwrj.cn
http://m37iFiZE.yqwrj.cn
http://Ik2RqPyd.yqwrj.cn
http://xt05e0L8.yqwrj.cn
http://ZEB8zpFp.yqwrj.cn
http://fMkH7xwm.yqwrj.cn
http://Ch7uKOht.yqwrj.cn
http://oF3XKj0A.yqwrj.cn
http://nb0cpst4.yqwrj.cn
http://dPzvMtAS.yqwrj.cn
http://Pq3phkYD.yqwrj.cn
http://zmQcEGFb.yqwrj.cn
http://0siKMNcP.yqwrj.cn
http://BLOa3t41.yqwrj.cn
http://fmjBTQ2G.yqwrj.cn
http://yh5RJ2h0.yqwrj.cn
http://4qtrRXwK.yqwrj.cn
http://L1VIVGsZ.yqwrj.cn
http://bRPyEh5a.yqwrj.cn
http://y71SBFYx.yqwrj.cn
http://vJK6cvGn.yqwrj.cn
http://DrqOmBPV.yqwrj.cn
http://wmSTuqyD.yqwrj.cn
http://YFhqku7u.yqwrj.cn
http://12xRVmlX.yqwrj.cn
http://www.dtcms.com/a/367133.html

相关文章:

  • 力扣190:颠倒二进制位
  • Elixir通过Onvif协议控制ip摄像机,扩展ExOnvif的获取预置位列表GetPresets
  • 《A Study of Probabilistic Password Models》(IEEE SP 2014)——论文阅读
  • 移动端固定资产盘点如何落地?系统操作全指南
  • 工业控制的“智慧大脑”:数字孪生技术如何预判生产风险?
  • 2025国赛B题保姆级教程思路分析 碳化硅外延层厚度的确定
  • 蔚来8月狂卖3.1万辆,反超理想引热议!
  • 【面试题】介绍一下BERT和GPT的训练方式区别?
  • 阿瓦隆 A1146 Pro 63T:性能与设计详解,探索区块链挖矿新高度
  • 渲染是否伤电脑?从根源减少损伤的技巧
  • 小白也能看懂,HTTP中的文件上传与下载到底发生了什么?
  • Ansible Playbook自动化运维全攻略
  • 小程序缓存数据字典
  • Web详解
  • testng.xml
  • 目标检测系列-Yolov5下载及运行
  • 微软出品!这个免费开源工具集获得了GitHub 123k程序员点赞
  • 链表三连击:面试官最爱考的三个单链表问题,你真的会吗?
  • 记录mat使用排查内存泄漏
  • 常见的相机模型针孔/鱼眼(Pinhole,Mei,K
  • 在线视频教育平台|基于Springboot的在线视频教育平台系统设计与实现(源码+数据库+文档)
  • MIT6.5840-Spring 2025-lab3~4 Debug 记录
  • @Percona XtraBackup 进行 MySQL 备份恢复
  • Redis 数据结构全面解析:从底层编码到实战应用
  • 借助 TX Text Control:在 .NET C# 中使用 PDF/A-3b 创建可信文档容器
  • 无需Python:Shell脚本如何成为你的自动化爬虫引擎?
  • Python--运算符概述
  • PyTorch 学习率调度器(LR Scheduler)
  • 深度学习篇---SENet
  • Java面试宝典:Redis的设计、实现