我正在React中编写一个类,并使用更高阶的组件将其导出,目前我已经...
import React, { Component } from 'react';
import { withRouter } from 'react-router';
/**
Project Editor
*/
class SpiceEditorRaw extends Component { ... }
const SpiceEditor = withRouter(SpiceEditorRaw);
export default SpiceEditor;
然后在另一个文件中,导入SpiceEditor
并使用
import SpiceEditor from './SpiceEditor'
class NameEditor extends SpiceEditor {
constructor(props){ ... }
...
render () { return (<h1> hello world <h1/>) }
}
但是我遇到错误:
index.js:2178 Warning: The <withRouter(SpiceEditorRaw) /> component appears to have a render method, but doesn't extend React.Component. This is likely to cause errors. Change withRouter(SpiceEditorRaw) to extend React.Component instead.
我相信可以使用compoenent
创建一个withRouter
,所以我的语法一定不正确吗?
答案 0 :(得分:3)
通常不应该在extends
以外的任何其他组件上使用React.Component
。我认为文档的Composition vs Inheritance部分对这一主题很有帮助。
您几乎可以用合成来完成所有事情。
示例
import SpiceEditor from './SpiceEditor'
class NameEditor extends React.Component {
render () {
return (
<SpiceEditor>
{ /* ... */ }
</SpiceEditor>
)
}
}