react技巧
https://juejin.cn/post/7223710471916388410 typescript
https://juejin.cn/post/7259929115481423909 字体美化
https://juejin.cn/post/7264556202138615864 更快访问静态资源
https://segmentfault.com/a/1190000045686345
高阶组件
1 | interface WithLoadingProps { |
在上面的代码中,我们定义了一个名为 withLoading 的高阶组件,它接收一个组件作为参数,并返回一个新的组件。新的组件接收一个名为 isLoading 的布尔值属性,并在 isLoading 为 true 时显示 Loading…,否则渲染传入的组件。
我们还定义了一个名为 User 的函数组件,并使用 withLoading 高阶组件对其进行了包装。最后,在 App 组件中,我们渲染了 UserWithLoading 组件,并传入了 isLoading 属性。
在 React 应用中,为了提高代码的复用性,我们通常使用高阶组件(Higher Order Component,简称 HOC)来对组件进行包装。高阶组件是一个函数,它接收一个组件作为参数,并返回一个新的组件
可是为什么不能直接用isloading变量判断输出什么,还得搞个组件出来啊
组件复用和单一责任原则
当多个组件在它们的渲染逻辑中需要相同的条件检查(如显示加载状态)时,将这部分逻辑抽象到一个 HOC 中可以避免代码重复。这样,每个组件可以专注于它的主要职责,而不是如何处理加载状态。这符合单一责任原则,即一个组件或模块应该只有一个改变的理由。保持组件简洁
如果你的项目中有多个地方需要处理加载状态,直接在每个组件里管理 isLoading 可能会导致很多重复代码。使用 HOC,你可以将加载逻辑集中管理,让主组件保持简洁和专注于它应该做的事情。可测试性和可维护性
通过使用 HOC 封装加载状态的处理,可以更容易地编写单元测试,因为你可以分别测试加载逻辑和组件的业务逻辑。此外,如果加载逻辑需要更新(比如添加额外的动画或者更改视觉展示),你只需修改 HOC 代码,而不必触及使用该 HOC 的所有组件。条件渲染的复杂性管理
在复杂的应用中,组件可能不仅仅需要根据是否正在加载来改变显示,还可能需要考虑错误状态、空状态等多种情况。HOC 可以帮助管理这些不同状态的渲染逻辑,而不是将所有这些逻辑塞进每一个组件中。代码分离和关注点分离
使用 HOC 可以将逻辑和 UI 分离开来,特别是在大型应用中,这种分离可以使得代码更加模块化,易于管理和扩展。你可以将特定的行为封装在 HOC 中,并在多个组件间复用这些行为。
示例对比
不使用 HOC,直接在组件中处理:
1 |
|
使用 HOC:
1 |
|