是什么让 React 库需要 preact-compat?

2024-01-07

我注意到某些图书馆,例如classnames在 Preact 中很容易获得,但其他人喜欢styled-components要求preact-compat.

是什么使得 React 库在 preact 中不受本机支持而需要使用 preact-compat?


免责声明:我从事 preact 工作。

里面有几个APIreact不需要的preact。但是因为现有的第三方库已经为我们发布的这些 API 开发了preact-compat它在之上重新实现了它们preact.

一些例子:

Children-API:

这个 API 特别有趣,因为根本不需要它preact. With preact the children属性始终是一个数组。

// React
Children.forEach(props.children, child => ...);
Children.map(props.children, child => ...);
Children.count(props.children);

// Preact
props.children.forEach(child => ...);
props.children.map(child => ...);
props.children.length;

unmountComponentAtNode:

这是另一个不需要的 APIpreact,因为我们可以通过渲染简单地卸载任何树null:

import { render } from "preact";
import App from "./app";

// Render App into dom
render(<App />, document.getElementById("root"));

// Unmount tree
render(null, document.getElementById("root"));

如果你想删除子树而不是根节点,你可以通过返回来做到这一点null来自一个组件。基本上null始终被视为empty value.

findDOMNode:

// React
const element = React.findDOMNode(componentInstance);

// In Preact that's just a property
const element = componentInstance.base;

在我们的例子中,这甚至适用于功能组件。请注意,几乎在所有情况下refs 优先于findDOMNode.

Summary: preact-compat主要包含第三方库的垫片,期望与以下 API 完全兼容react.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是什么让 React 库需要 preact-compat? 的相关文章

随机推荐

  • 现实世界中的递归示例[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 什么是真实世界除了深度优先搜索 DFS 之外 递归方法是自然解决方案的问题吗 我不考虑河内塔 http en wikipedia or
  • 熊猫拆分列

    给定以下数据框 import pandas as pd import numpy as np df pd DataFrame A a b c d B Y gt abcd abcd efgh Y gt efgh df A B 0 a Y gt
  • 根据 C++ 标准的定义实现“is_similar”类型特征

    我正在尝试实施一个is similar基于标准给出的定义的类型特征 详细信息here http eel is c draft conv qual 2 两种类型T1 and T2如果它们具有 cv 分解 则它们是相似的 与相同的n使得对应的P
  • GAE 上的 Struts 2:无法在拦截器内设置会话值

    我正在编写一个 Struts 2 拦截器 在其中检查用户是否有效 如果无效 用户将被重定向到登录页面 但在此之前 我尝试检索用户访问此处的 URL 并将其放入会话变量中 以便在登录完成后我可以将他重定向回那里 但是当我尝试在会话中放入一个值
  • background-position-y 在 Firefox 中不起作用(通过 CSS)?

    在我的代码中background position y不起作用 在 Chrome 中可以 但在 Firefox 中不行 有人有什么解决办法吗 如果你的position x是0 除了写之外没有其他解决方案 background positio
  • Wiki 数据导入 virtuoso

    我想将维基数据加载到 virtuoso 中 经过几天的搜索 我找不到任何教程 或者至少找不到使用 virtuoso 来 sparql 查询 wikidata 的人 我不想白花钱买一台服务器来加载50G 的数据 例如 为什么是 virtuos
  • 使用polyfit来预测物体掉落的位置?

    我有一个物体以抛物线模式抛出的信息 从开始位置到结束位置 按照特定时间间隔总共拍摄了 30 张图像 现在我已经成功提取了所有 30 张图像中被抛出物体的 x y 坐标 我认为使用 polyfit 或者也许是 polyval 可以帮助我预测前
  • 如何使用 QSocketNotifier (linux) 监视串行端口?

    有人可以给我一个关于如何设置 QSocketNotifier 在发生事件时触发事件的示例吗 dev ttyS0 最好在 python pyqt4 中 下面是一个使用 QSocketNotifier 不断读取文件的示例 只需将 foo txt
  • SQL 2005中检查外键是否存在的方法

    有没有一种简单的方法来检查表中的列是否存在外键 我正在编写一个脚本 仅当外键不存在时才会添加外键 您可以使用这个脚本 IF EXISTS SELECT FROM sys foreign keys WHERE object id OBJECT
  • Google Javascript API 地理编码限制

    使用 Google Maps JavaScript API v3 进行客户端地理编码有哪些限制 我的研究 Google Maps PHP API 每天的地理编码请求限制为 2500 个 https developers google com
  • 如何将热量输出包含在 wix 文件中? (没有 Visual Studio 项目)

    我需要构建一个安装程序 并且出于多种原因 我想避免使用 WiX 项目模板 我非常高兴自己编写这些东西的脚本 并且已经有了一个适合它的自定义构建流程 我相信我很好地理解了 WiX 蜡烛 加热和照明工具的作用 我正在熟悉 wxs 文件格式 并且
  • 为什么 GDB 计算浮点运算的方式与 C++ 不同?

    我在尝试处理浮点算术问题时遇到了一些令人困惑的事情 首先 代码 我将问题的本质提炼到这个例子中 include
  • 如何向 Xcode 4.4 添加本地化语言?

    参考本指南 如何使用 Xcode 4 本地化我的应用程序 https stackoverflow com questions 5349066 how to localize my app with xcode 4 我注意到在本地化下 我的
  • ClientBase 未实现 IDisposable 成员

    如果 Dispose 方法声明不可见 声明 那么 System ServiceModel ClientBase 抽象类如何实现 IDisposable 接口 如果我尝试做同样的事情 我会收到错误并且无法编译 abstract class A
  • SQL Server - 按小时、多天查询

    我希望使用 datepart 运行 SQL 查询 将数据拆分为每小时增量 然后使该查询运行多天 目前 我只是将日期增加一天 然后运行多个查询 我想知道是否有一种方法可以将这一切合并到一个查询中 该查询将提供整个日期范围的输出 select
  • php 中特定日期的上一个工作日

    我正在寻找获取特定日期的最后一个工作日的最佳方法 我使用的示例是平安夜 12 月 24 日 前的最后一个工作日 不幸的是这不起作用 echo date l jS of F Y h i s A strtotime last weekday b
  • .Net 4.5:我应该使用 IDataErrorInfo 还是 INotifyDataErrorInfo?

    我以前用过IDataErrorInfo在我的 MVVM WPF 应用程序中 现在之后INotifyDataErrorInfo在 Net 4 5中可用 是否最好替换IDataErrorInfo或继续使用旧方法IDataErrorInfo 有许
  • 对象函数 (a,b){return new e.fn.init(a,b,h)} 没有方法 'cookie'

    试图获取 a 的值cookie如果它设置并更新div与cookievalue 否则生成一个80 100之间的随机数 将其设置为cookie 然后更新div 我收到错误 Object function a b return new e fn
  • 如何在 html 元素上重写 onkeydown ?

    我继承了一个在弹出窗口中实现禁用 F5 的应用程序 但是 如果用户单击窗口正文下方并按 F5 页面仍会刷新 我将函数调用移至 现在 F5 被禁用 一切都按预期工作 然而 这不是放置代码的最佳位置 如果我可以在我的代码中执行如下所示的操作 我
  • 是什么让 React 库需要 preact-compat?

    我注意到某些图书馆 例如classnames在 Preact 中很容易获得 但其他人喜欢styled components要求preact compat 是什么使得 React 库在 preact 中不受本机支持而需要使用 preact c