react

作者: sun_hl | 来源:发表于2021-11-16 17:33 被阅读0次

    1、react中key的作⽤
    2、⽣命周期,新旧⽣命周期的不同
    3、函数组件和component组件的区别
    4、控制组件和⾮受控组件的区别
    5、⽗⼦组件通信
    6、state和props的区别
    7、setState的原理
    8、虚拟dom,以及使⽤虚拟dom有什么好处
    9、react diff算法
    10、refs的作⽤
    11、redux
    12、react的render props的作⽤
    13、⾼阶组件
    14、react hooks的优缺点?
    优点⼀:更容易复⽤代码。它通过⾃定义 hooks 来复⽤状态,从⽽解决了类组件有些时候难以复⽤逻辑的问题。 具体如下:每调⽤ useHook ⼀次都会⽣成⼀份独⽴的状态,函数每次调⽤都会开辟⼀份独⽴的内存空间。虽然状态
    ( from useState )和副作⽤( useEffect )的存在依赖于组件,但它们可以在组件外部进⾏定义。 上⾯这两点,⾼阶组件和renderProps也同样能做到。但hooks实现起来的代码量更少,以及更直观(代码可读 性)。举个例⼦,我们经常使⽤的 antd-table ,我们经常需要写⼀些状态: pagination={current:xxx,
    pageSize:xxx,total:xxx} 。但许多场景只是简单的表格,我们希望封装⼀个⾼阶组件,⾃带这些状态,并可以⾃动 调⽤ server 去获取 remote data 。useTable和tableProps的代码是分离的,但⾼阶组件⼀多,代码会变得较难 阅读, 你难以区分这个props是来⾃哪个⾼阶组件,或者还是来⾃业务的⽗组件。 相对⽐⾼阶组件“祖⽗=>⽗=>⼦”的层层嵌套,把" useTable "和输出的值写到⼀起,结构更清晰,更容易阅读和 维护。对⽐⾼阶组件,代码量更少。

    优点⼆:清爽的代码⻛格 函数式编程⻛格,函数式组件、状态保存在运⾏环境、每个功能都包裹在函数中,整体⻛
    格更清爽,更优雅。另外,对⽐类组件,函数组件⾥⾯的unused状态和unused-method更容易被发现。

    优点三:代码量更少 向props或状态取值更加⽅便,函数组件的取值都从当前作⽤域直接获取变量,⽽类组件需要 先访问实例引⽤ this ,再访问其属性或者⽅法,多了⼀步。更改状态也变得更加简单, this.setState({
    count:xxx }) 变成 setCount(xxx) 。因为减少了很多模板代码,特别是⼩组件写起来更加省事,⼈们更愿意去拆分 组件。⽽组件粒度越细,则被复⽤的可能性越⼤。所以, hooks 也在不知不觉中改变⼈们的开发习惯,提⾼项⽬的组件复⽤率。

    缺点:

    1、响应式的useEffect 你必须清楚代码⾥和useCallback api的第⼆个参数依赖性数组的改变时机,并且掌握上下⽂的触发时机。当逻辑较复杂的时候, 触发的次数,可能会被你预想的多。对⽐componentDidmount componentDidUpdate 带来的⼼智负担更⼤。

    2、状态不同步 函数的运⾏是独⽴的,每个函数都有⼀份独⽴的作⽤域。函数的变量是保存在运⾏时的作⽤域⾥ ⾯,当我们有异步操作的时候,经常会碰到异步回调的变量引⽤是之前的,也就是旧的(这⾥也可以理解成闭包)。⽤
    useRef 返回的 immutable RefObject ( current 属性是可变的)来保存 state , 怎么

    避免 react hooks 的常⻅问题
    不要在 useEffect ⾥⾯写太多的依赖项,划分这些依赖项成多个单⼀功能的 useEffect 。其实这点是遵循了软 件设计的“单⼀职责模式”。 如果你碰到状态不同步的问题,可以考虑下⼿动传递参数到函数。

    15、使⽤typescript的好处和缺点?泛型的作⽤及使⽤场景
    什么是TypeScript
    TypeScript 是 JavaScript 的⼀个超集,主要提供了类型系统和对 ES6 的⽀持。TypeScript 是
    JavaScript 的类型的超集,它可以编译成纯 JavaScript。编译出来的 JavaScript 可以运⾏在任何浏览器上。
    TypeScript 编译⼯具可以运⾏在任何服务器和任何系统上。TypeScript 是开源的。
    TypeScript的设计⽬的应该是解决JavaScript的“痛点”:弱类型和没有命名空间,导致很难模块化,不适合开发 ⼤型程序
    TypeScript优点:
    1、TypeScript 增加了代码的可读性和可维护性。
    2、TypeScript ⾮常包容:
    TypeScript 是 JavaScript 的超集,.js ⽂件可以直接重命名为 .ts 即可
    即使不显式的定义类型,也能够⾃动做出类型推论
    可以定义从简单到复杂的⼏乎⼀切类型 即使 TypeScript 编译报错,也可以⽣成 JavaScript ⽂件 兼容第三⽅库,即使第三⽅库不是⽤ TypeScript 写的,也可以编写单独的类型⽂件供 TypeScript 读取
    3、TypeScript 拥有活跃的社区 ⼤部分第三⽅库都有提供给 TypeScript 的类型定义⽂件
    Google 开发的 Angular2 就是使⽤ TypeScript 编写的
    TypeScript 拥抱了 ES6 规范,也⽀持部分 ESNext 草案的规范 使⽤ TS 的缺点
    1、短期内增加开发成本,但是增加类型注释可减少维护成本
    2、集成到构建流程需要⼀些⼯作量
    3、可能和⼀些库结合的不是很完美 泛型的作⽤及使⽤场景: 泛型:泛型的本质是参数化类型,通俗的将就是所操作的数据类型被指定为⼀个参数,这种参数类型可以⽤在类、接
    ⼝和⽅法的创建中,分别成为泛型类,泛型接⼝、泛型⽅法。
    为什么使⽤泛型
    TypeScript 中不建议使⽤ any 类型,不能保证类型安全,调试时缺乏完整的信息。
    TypeScript可以使⽤泛型来创建可重⽤的组件。⽀持当前数据类型,同时也能⽀持未来的数据类型。扩展灵活。可 以在编译时发现你的类型错误,从⽽保证了类型安全。
    16、react fiber的原理
    17、react-thrunk中间件

    相关文章

      网友评论

          本文标题:react

          本文链接:https://www.haomeiwen.com/subject/frghtrtx.html