【发布时间】:2021-02-15 17:11:38
【问题描述】:
给定一些字符串:
const someString = "<p>Here is some string <strong>with some nested HTML</strong></p>"
我可以从字符串中删除 <p> 和 </p>,然后使用 React 做:
React.createElement('p', {
dangerouslySetInnerHTML: {
__html: html,
},
})
(我们假设html这里是字符串someString,去掉了p标签)
不过,React 17 发布时带有新的 JSX 转换:https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html
意思是 React 不再编译成 React.createElement 而是直接编译成 JSX。
有没有办法通过新的 JSX 转换来实现这一点?
【问题讨论】:
-
"而是直接编译成 JSX" - 我不确定你的意思,转换仍然输出纯 JS,只是将
React.createElement('h1', null, 'Hello world')更改为 @987654331 @ 并自动注入新的导入,而不是要求开发人员确保React在范围内。 -
你是对的!!你可以在导入
import { jsx as _jsx } from 'react/jsx-runtime';时将React.createElement转换为_jsx我只需要使用// @ts-ignore来忽略来自react/jsx-runtime的导入