首页 > 解决方案 > 如何获取自定义 React Babel pragma 以将字符串作为参数而不是函数传递

问题描述

作为如何创建自己的 babel 处理器替代 `React`的后续操作,我收到此错误:

react-dom.development.js:506 警告:该标签在此浏览器中无法识别。如果您打算渲染一个 React 组件,请以大写字母开头。

  • 在富
  • 在未知
  • 在酒吧

如果我将其设为大写字母,则会出现此错误:

未捕获的 ReferenceError:未定义 Foo

我猜这是因为它将它作为这样的函数传递:

React.createElement(Foo)

我的问题是,如何让它作为字符串传递?

MyThing.create('Foo')

我想知道如何用大写和小写字母来做。

标签: javascriptreactjsbabeljs

解决方案


据我所知,您必须进行修改@babel/plugin-transform-react-jsx才能做到这一点。默认情况下,它假定初始封顶标签是组件(函数/类),而小写标签是 HTML 标签名称。它将组件直接传递给由pragma配置参数标识的函数(React.createElement(Foo)例如,默认情况下),但 HTML 标记名称为字符串 ( React.createElement("div"))。该插件没有列出任何用于更改该行为的配置选项,因此如果您需要它,您必须分叉该插件并对其进行修改以按照您希望的方式工作。


推荐阅读