摘要: render prop是一个技术概念。它指的是使用值为function类型的prop来实现React component之间的代码共享。 如果一个组件有一个render属性,并且这个render属性的值为一个返回React element的函数,并且在组件内部的渲染逻辑是通过调用这个函数来完成的。那 阅读全文
posted @ 2022-11-09 12:26 夏天的味道123 阅读(65) 评论(0) 推荐(0)
摘要: Suspense 基本应用 Suspense 目前在 react 中一般配合 lazy 使用,当有一些组件需要动态加载(例如各种插件)时可以利用 lazy 方法来完成。其中 lazy 接受类型为 Promise<() => {default: ReactComponet}> 的参数,并将其包装为 r 阅读全文
posted @ 2022-11-09 12:26 夏天的味道123 阅读(58) 评论(0) 推荐(0)
摘要: 本文概述了5种现代高级React模式,包括集成代码、优点和缺点,以及在公共库中的具体用法。 像每个React开发者一样,你可能已经问过自己以下问题之一 我如何建立一个可重复使用的组件以适应不同的使用情况? 我如何建立一个具有简单API的组件,使其易于使用? 我如何建立一个在用户界面和功能方面可扩展的 阅读全文
posted @ 2022-11-08 11:42 夏天的味道123 阅读(68) 评论(0) 推荐(0)
摘要: Mixins React Mixin通过将共享的方法包装成Mixins方法,然后注入各个组件来实现,官方已经不推荐使用,但仍然可以学习一下,了解为什么被遗弃。 React MiXin只能通过React.createClass()来使用,如下: const mixinDefaultProps = {} 阅读全文
posted @ 2022-11-08 11:42 夏天的味道123 阅读(27) 评论(0) 推荐(0)
摘要: 复用是组件化开发体系的立命之本,可以说组件化的初衷就是为了复用性。但是组件化的复用方式也存在一定的问题,其中拆分粒度就是其中一个绕不开的话题,今天咱们就来讲一讲 React 当中的一个不太常用的 API:cloneElement,他如何帮组我们更好得进行组件拆分。 假如我们有一个Layout组件,那 阅读全文
posted @ 2022-11-08 11:41 夏天的味道123 阅读(33) 评论(0) 推荐(0)
摘要: 1. JSX与虚拟DOM 我们从React官方文档开头最基本的一段Hello World代码入手: ReactDOM.render( <h1>Hello, world!</h1>, document.getElementById('root') ); 这段代码的意思是通过 ReactDOM.rend 阅读全文
posted @ 2022-11-07 14:30 夏天的味道123 阅读(30) 评论(0) 推荐(0)
摘要: 这一章就来讲讲React在协调阶段的beginWork里面主要做的事情 -- dom diff。 本文主要讲的是React17.0.2版本的diff,在此我也画了一个简单的流程图: reconcileChildren dom diff的入口函数就是reconcileChildren,那么他的源码如下 阅读全文
posted @ 2022-11-07 14:29 夏天的味道123 阅读(43) 评论(0) 推荐(0)
摘要: 在 React 中,对于每一次由状态改变导致页面视图的改变,都会经历两个阶段:render 阶段、commit 阶段。 只有 class 组件才有生命周期,因为 class 组件会创建对应的实例,而函数组件不会。组件实例从被创建到被销毁的过程称为组件的生命周期。 由 class 组件创建的实例具有生 阅读全文
posted @ 2022-11-07 14:15 夏天的味道123 阅读(77) 评论(0) 推荐(0)
摘要: Transition 使用姿势 Transition 是 react18 引入的新概念,用来区分紧急和非紧急的更新。 紧急的更新,指的是一些直接的用户交互,如输入、点击等; 非紧急的更新,指的是 UI 界面从一个样子过渡到另一个样子; react 官方的 demo 如下: import {start 阅读全文
posted @ 2022-11-04 09:50 夏天的味道123 阅读(92) 评论(0) 推荐(0)
摘要: 一、父组件通过 Ref 调用子组件中的方法 这里同时演示使用函数组件和类组件的父子组件如何编写 子组件 React.forwardRef React.useImperativeHandle public、private、protected /** * 声明一个 function component 阅读全文
posted @ 2022-11-04 09:48 夏天的味道123 阅读(36) 评论(0) 推荐(0)