你能在 JSX 中创建一个 react 组件,其中组件来自传递的属性吗?



我有几个呈现相同组件的路由。 每个路由都有一个特定的组件作为它将呈现的属性。

<CommonComponent specificComponent={SpecificComponent} propName="propValue" />

这在 CommonComponent 中按预期工作:

React.createElement(specificComponent, { dataUrl: dataUrl });

有没有JSX方法来做React.createElement? 示例路由如下所示:

<Route path="/pageOne">
<CommonComponent specificComponent={SpecificComponentOne} dataUrl="dataUrl" />
</Route>
<Route path="/pageTwo">
<CommonComponent specificComponent={SpecificComponentTwo} dataUrl="dataUrl" />
</Route>

是的,有。所需的技巧是将组件存储在具有大写名称的变量中!听起来很傻,但这是真的。因此,在CommonComponent中,您只需使用:

const ComponentToRender = props.specificComponent;
return (<ComponentToRender ... />);

最新更新