React 函数式编程:优雅地从逻辑中分离视图

React 函数式编程:优雅地从逻辑中分离视图

Separating View from its Logic

视图及其逻辑是组件的构建块。它们一起工作并且必须共存。但是,混合此代码会导致不必要的责任委派。

我们如何将它们分开,同时又让它们协同工作? React 有 API 来帮助我们吗?

我们将在本博客中回答此类问题。

问题:从 JSX 中分离钩子

让我们举个例子。

BlogPage.tsx

博客页面 组件是逻辑和视图结合的地方。正如我们所见,来自钩子的数据传递到博客列表。但是,这种执行和通过的责任是否应该由 博客页面 零件?

I think not!

它应该与自定义组件有关吗?

BlogPage.tsx (Refactored)

BlogsList.tsx

伟大的!我们解决了防止不必要的责任下放的问题。

然而!我们回到第一方。

  • 它将视图与逻辑相结合。
  • 重用 Card 组件时的代码冗余。
    例如:如果你想添加另一个名为 作者名单博客页面 使用来自不同 API 的数据呈现相同的列表?你必须用另一个钩子重复 JSX 样板。

Didn’t see that coming!?

经典的鸡和蛋的情况,不是吗?

那么我们可以将它们进一步分开并将钩子移出组件吗?

让我们来了解一下!

解决方案:自定义 HOC

我们如何使用 HOC 将视图与其逻辑结合起来,而不需要额外的组件?

HOC 的以下实现返回一个组件,其中钩子的结果与 props 映射。

wihtHookProps.tsx

生成的组件是可定制的,并且可以接受其他道具。您还可以自定义“displayName”。

现在新的实现逻辑如下:

BlogsList.tsx

That’s pretty much it

结论

创建和使用这样的 HOC 是一种选择。它可以成为不断增长的代码库的合适解决方案。这是简化组件职责的方法之一。此外,它减少了一些样板并提高了它的可维护性。我希望这对您的用例有所帮助。

觉得有趣吗?请在评论部分告诉我。

快乐编码!

Stackoverflow job board is a myth! LOL.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/18578/24360609

posted @   哈哈哈来了啊啊啊  阅读(261)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示