reactjs - React/JSX 如何指定内置 HTML 类型作为变量

标签 reactjs jsx

我正在构建一个将使用 native html 类型作为其根元素的组件。为简单起见,我们假设 <td><th> 。使用用户定义的组件执行此操作很容易,因为它们只是可以传递的函数:

function MyWrapper(props) {
  const Element = props.element;
  <Element ...>
    ...
  </Element>
}

<MyWrapper element={MyComponent} />

但是如何传递原生 html 类型,例如 <td>element ?如果我为我可能想要传入的每种类型定义一个愚蠢的包装函数,我就可以让它工作,例如:

const th = props => <th {...props} />;
<MyWrapper element={th} />

但我觉得我缺少一些关于 jsx 的东西,因为需要为内置组件定义一个函数。是否有另一种方法可以引用动态但内置的组件类型,而无需在一堆 native html 组件周围定义包装器?

最佳答案

问题

您正在尝试定义第 th 元素是什么。

解决方案

将 html 元素作为字符串传递。

<MyWrapper element={"th"} />

演示

Edit react-jsx-how-to-specify-a-built-in-html-type-as-a-variable

function MyWrapper({ children, element: Element }) {
  return <Element>{children}</Element>;
}

const MyComponent = ({ children }) => <div>{children}</div>;

export default function App() {
  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>

      <MyWrapper element={MyComponent}>My Component</MyWrapper>
      <MyWrapper element={"th"}>Test</MyWrapper>
      <MyWrapper element={"td"}>Test</MyWrapper>
      <MyWrapper element={"li"}>Test</MyWrapper>
    </div>
  );
}

enter image description here

关于reactjs - React/JSX 如何指定内置 HTML 类型作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66167609/

相关文章:

javascript - react : requesting and iterating through images in JSON

javascript - componentWillMount 之前的 enzyme 模拟函数

javascript - 类型错误 : Cannot read property 'opacity' of null

javascript - 使用 jest 运行测试时 URLSearchParams 未定义错误

reactjs - npm install 发现 4 个漏洞

javascript - 使用 array.map 在 React 中列出在 IE10 中不起作用

javascript - 如何让React组件返回一个javascript节点元素

javascript - 输入的每个更改都作为数据单独存储(例如 : "t", "te"、 "tes"、 "test"而不是只有 "test")

javascript - 无法使用 React Redux 存储数据?

reactjs - 遍历 child ,找到最后一个元素