有这样一个组件函数:
function Component() {
const content = 123 + 456
return <div>{content}</div>
}
我要把整个函数原样转为字符串
app.jsx
function App() {
const str = Component.toString()
console.log(str)
return (
<div>{str}</div>
)
}
打印出来的却是这样:
function Component() {
const content = 123 + 456;
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
children: content
}); }
贴个CodeSandbox链接
在 JS 的眼里,组件确实就是长这个样子的,所谓“原样”其实是 JSX 的语法。
如果你想直接获得 JSX 的字符串,你可以:
把它放到静态文件夹,然后用 Ajax 获取,这样就能够在 JS 里获得代码原文。
自己写 Babel 插件,在编译组件的时候顺便把组件的原文附上,例如附着在
.sourceCode
属性上,那么就可以这样获取:这个方案比方案一要困难一些。