【发布时间】:2016-11-11 23:42:59
【问题描述】:
我正在构建一个 React 组件,它通过 prop component={MyTemplate} 接收一个组件(PropTypes.func 或 PropTypes.element),它将用作模板,类似于 react-router 进行路由定义的方式。
在组件内部,我想将道具附加到 component 元素。根据文档,我知道我应该使用cloneElement 来附加道具。
class MyComponent extends Component {
// ...
render () {
const {component, blockProps} = this.props;
const body = cloneElement(component, blockProps);
return (
<div className="sortable-block__body">
{body}
</div>
);
}
}
// later when rendering the component
<MyComponent component={component} ... />
在渲染组件时 React 抛出 Invariant Violation:
未捕获的不变违规:元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件),但得到:未定义。
cloneElement 不将无状态函数视为ReactElement 吗?
如果没有,那么如何管理向无状态组件添加道具?
【问题讨论】:
标签: javascript reactjs