首页 > 其他分享 >react面试

react面试

时间:2024-03-08 20:22:53浏览次数:23  
标签:const render dispatch react 面试 组件 redux event

 

<p dangerouslySetInnerHTML={{ __html: rowHtml }}>
事件 bind(this) this是undefined 静态方法来定义不需要 bind: handle = () => { }   event参数 event.target 指向当前元素,表示绑定在哪里 event.currentTarget 输出也是当前元素, 但是是假象 不是原声的event 是SyntheticEvent 组合 nativeEvent 获取原生的 nativeEvent.currentTarget 是document 所有的事件都是挂载到 document 上 和Vue是不同的 react17 绑定到 root 上,可以多个版本并存,例如微前端   最后一个参数是 event  
1 List.propTypes = {
2   list: PropTypes.arrayOf(PropTypes.object).isRequired
3 }
数据提升:数据和操作都放在 外层,子组件只负责渲染   setState 为什么必须返回一个新对象   不可变值 数组的:concat / slice / filter push pop splice不行,不能影响到原来的值 SCU方法来判断是否更新 对象 assign / 扩展运算符   可能是异步更新 在setTimeout中 setState是同步的 自定义的DOM事件中,setState是同步的 传入函数也是 异步的,但不合并   可能会被合并 调用3次,结果是 1,如果是函数 结果为 3, 合并方式和 vue不同 setState传入函数不会被合并   生命周期函数 渲染: 父构造函数 => 父render =>. 子构造函数 => 子render => 子didMount => 父didMount 更新: 父render => 子render => 子 didUpdate => 父didUpdate   受控组件 / 非受控组件 非受控组件: ref手动操作DOM元素 + defaultValue  比如:上传文件和富文本编辑器 就需要ref   Portals 类似teleport:渲染到父组件以外    createPortal(JSX, DOM节点) 场景:父组件 overflow:hidden, z-index太小 fixed组件需要放在 body 层   context 传递给每个子组件,类似 Provider const ctx = createContext   异步组件. import(). /. Lazy / Suspense
const Demo = lazy(() => import('  ...  '))
<Suspense><Demo />

 

性能优化:SCU

shouldCompoentUpdate(nextProps, nextState) 默认返回 true 父组件更新,子组件也会默认更新 SCU 必须配合不可变值才能有效, 不建议深度比较,所以在设计 数据的时候,层级不要定义太深 PureComponent / memo 根据 浅比较   immutable.js基于共享数据 不是深拷贝,速度更好   逻辑抽离

高阶组件: HOC(接受一个组件返回一个组件) 类似于 工厂或者 装饰器

render props: 将 render函数作为参数传递给子组件,然后在子组件中 生成有用的数据

 

redux使用

单项数据流 dispatch(action) => reducer产生新的state => subscribe 触发通知 store / action / reducer react-redux:connect(mapStateToProps mapDispatchToProps)( Component )  
异步action   需要 redux-thunk来实现
const add = text => ({ type: 'add', id: 3 })
const asyncAdd = text => {
return dispatch => {
    dispatch(action)
}
}
或者 redux-promise /  redux-saga

原理是修改 dispatch

 

  BFC触发的条件
  • float的值不是none
  • position的值不是static或者relative
  • display的值是inline-block、table-cell、flex、table-caption或者inline-flex
  • overflow的值不是visible
       

 

标签:const,render,dispatch,react,面试,组件,redux,event
From: https://www.cnblogs.com/escapist/p/18061781

相关文章

  • vue面试1
    生命周期函数(父子)顺序父beforeCreate =>.父created==>.父beforeMount==>子beforeCreate==> 子created==> 子beforeMount==> 子mounted==>父mounted更新顺序父beforeUpdate==>子beforeUpdate==>子updated==>父updated卸载顺序父beforeDestory/子before......
  • react-router路由懒加载/路由守卫
    路由懒加载目前在网络上搜到的路由懒加载方式基本都是通过React.lazy()方法配合Suspense的方式,可能是受vue-router的影响,我很不喜欢这种方式,不喜欢就改变。上代码import{createBrowserRouter}from"react-router-dom";constrouter=createBrowserRouter([{......
  • 前端面试题集合
    小程序面试题小程序的双向绑定this.setData({})小程序的自适应rpx小程序在页面中怎么样传递数据(1).全局传递app.jsglobalData(2).跳转页面的传参wx.navigateTo 和 wx.redirectTo在跳转后的页面onload的option小程序的生命周期onLoad 页面加载时触发。一个页......
  • 前端技术面试题
      1.JS中的数据类型有哪些?_____________________________________________ 2.JS中强制类型转换为number类型的方法有哪些?_____________________________________________ 3.字符串转换成数组的方法是_________,数组转换成字符串的方法是________ 4.手写js‘数组去重......
  • 面试1
    1.为什么typeofnull ='object'是通过类型标记位,而null是一个固定的值。开头为000000:object001:integer010:double100:string110:boolean 2.+操作转化为数字传统数据类型toNumber(null)  0toNumber(undefined) NaNtoNumber(1)  1toNumber("123a......
  • react-pdf 实现pdf文件预览功能
    参考文档https://www.npmjs.com/package/react-pdfhttps://github.com/wojtekmaj/react-pdf#readme 一、概述react项目中,很多时候(尤其是需展示报告的页面)会遇到需要预览pdf文件的需求。而据调研,使用react-pdf插件可以很好地实现这个功能。  二、操作步骤1.安......
  • Vue面试题
    1、active-class是哪个组件的属性?嵌套路由怎么定义?答:vue-router模块的router-link组件。 2、怎么定义vue-router的动态路由?怎么获取传过来的动态参数?答:在router目录下的index.js文件中,对path属性加上/:id。 使用router对象的params.id 3、vue-router有哪几种导航钩子? ......
  • 前端中级面试
     js原理题1.什么是闭包,举个例子说明一下?答:“闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。”举例:创建闭包最常......
  • 软件测试经典面试题:如何测微信的朋友圈?
    这是一道非常经典的面试题,相信很多小伙伴在面试中都被面试官问到过这个问题,想要回答好这个面试题,我们首先要搞清楚面试官在考察候选者什么方向测试技能。其实不难猜出,面试官主要是想考察候选者测试用例设计能力。一般会从以下两个方面来考察候选者:1、测试用例设计的全面性2、测试......
  • python面试题 :进程、线程、协程的区别
    进程、线程和协程区别1.进程进程是系统资源分配的最小单位,系统由一个个进程(程序)组成一般情况下,包括文本区域(textregion)、数据区域(dataregion)和堆栈(stackregion)。文本区域存储处理器执行的代码数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动......