reactjs - React JS - 使用 HOC 时出现不变违规错误
问题描述
在学习反应中的高阶组件时,我试图在我的代码中使用它。这样做时,我收到“不变违规错误”
//Higher Order Component
const withStyles = (OriginalComponent) => {
class NewComponent extends React.Component{
render(){
return <OriginalComponent />
}
}
return NewComponent;
}
class FancyButton extends React.Component {
render() {
return <button>Fancy button</button>;
}
}
const App = props => {
//I am calling the HOC to get my updated component
let Enhanced = withStyles(<FancyButton />);
return (
<Enhanced />
);
};
ReactDOM.render(<App />, document.getElementById("root"));
在这里,我调用 HOC(withStyles) 并将返回的组件存储在变量“Enhanced”中。在App组件中,我可以直接调用Enhanced组件吗?
我希望输出应该是按钮元素,但我收到“不变违规”错误
解决方案
您正在传递 FancyButton 的渲染结果,而您应该传递实际的组件函数见下文:
...
const App = props => {
//I am calling the HOC to get my updated component
let Enhanced = withStyles(FancyButton);
return (
<Enhanced />
);
};
...
推荐阅读
- config - 如何使用 silverstripe-fluent 翻译本机 SiteConfig
- android - 填充 EditText 并按下新键时如何捕获事件?
- scala - Spark Streaming Kafka:使用 spark-submit 运行时 ByteArrayDeserializer 的 ClassNotFoundException
- amazon-web-services - AWS 配置运行状况检查 EC2
- pandas - Pandas groupby,求和并填充原始数据框
- ios - Xcode 在丢弃所有更改后删除 pod 文件文件夹和架构
- pandas - 如何有条件地重置熊猫数据框中的滚动最大初始值/行?
- c# - 使用 linq 在相关表中选择实体属性
- rust - 为什么调用消耗后调用 BufReader::fill_buf 返回的字节数比我预期的少?
- html - 带有`position:sticky;`的粘性页脚