React常见问题

1. 为什么选择React

2. JavaScript 中如何写JSX ?浏览器是如何识别它?

JSX 只是一种 Facebook 普及的标记语法,可以在Javascript中直接书写html,而不用一个的DOM对象。采用JSX,就会有一个编译的过程。将HTML写的DOM翻译成js的对象。

为什么会有中间这一层?

  • 原因之一:我们拿到一个UI表示的对象之后,不一定会把它就在渲染在普通的页面上,我们可能会把它渲染到一个canvas(react-canvas)上,或者手机app(react-native)上。这也是为什么要把react-dom单独抽离(而不是包括在react中)的原因。

  • 原因之二:有了这样一个对象之后,就可以在数据改变需要重新渲染对象的时候,用比较快的算法来操作js对象(避免直接操作页面上的DOM),这样可以减少浏览器重排,极大的优化性能。

JSX仅仅提供React.createElement(component,props, ...children)函数这样的语法糖. 当一个元素是小写开头的时候,一般被引用为内建组件,比如<div>或者<span>,会给React.createElement传入一个字符串div或者span,而大写字母开头的组件比如:<Foo />会编译成React.createElement(Foo)并且和组件定义联系起来。<myComp>会报错。

你能解释下“状态提升”理念吗?

“它允许你在兄弟组件间传递数据”或“它允许你拥有更多纯展示组件,更易复用”

如果不能在组件间传递数据,你怎样给多级组件传递数据

自从 React 16.3 开始,Context 已经成为主流(function-as-child 模式), 如果这里能提到 Redux 或 MobX 也很好。简单说就是,当你不想在组件树中通过逐层传递props或者state的方式来传递数据时,可以使用Context来实现跨层级的组件数据传递.

Context的使用基于生产者消费者模式.对于父组件,也就是Context生产者(Provider),子组件是消费者Consumer

 

小型的代码挑战

https://blog.csdn.net/sinat_17775997/article/details/83830796

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React常见面试题包括但不限于以下几个方面: 1. React组件的生命周期:React组件的生命周期分为三个阶段,分别是挂载阶段、更新阶段和卸载阶段。在每个阶段,都有相应的生命周期方法可以被调用,比如componentDidMount、componentDidUpdate和componentWillUnmount等。 2. React的虚拟DOM和DOM diff算法:React通过使用虚拟DOM来提高性能。虚拟DOM是一个轻量级的JavaScript对象,它表示真实DOM的层次结构。当数据发生变化时,React会使用DOM diff算法来比较新旧虚拟DOM树的差异,并只更新需要变化的部分,从而避免了对整个DOM树进行重渲染。 3. React中的状态管理:React有多种状态管理的方式,最常用的是使用组件的state和props来管理状态。另外,还可以使用React的Context API、Redux、Mobx等来实现更灵活的状态管理。 4. React中的事件处理:在React中,可以通过给元素添加事件处理函数来处理用户的交互行为。常见的事件处理方式包括直接在JSX中绑定事件处理函数、使用类组件中的成员方法作为事件处理函数、使用React的Hooks中的useEffect来处理副作用等。 5. React的组件通信:React组件之间的通信可以通过props传递数据、使用React的Context API、使用全局状态管理工具等方式实现。另外,如果组件之间的通信比较复杂,还可以考虑使用消息订阅-发布模式或者事件总线来实现。 6. React的性能优化:React提供了一些性能优化的手段,比如使用shouldComponentUpdate来控制组件的更新、使用React的memo和useMemo来缓存计算结果、使用React的Fragment来减少不必要的DOM节点等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值