javascript - 反应中高阶组件的问题
问题描述
我正在学习如何使用高阶组件。在那里我想突出显示一些文本。在我的代码中,我可以使用<div>
. 问题是我只想突出显示文本的一部分。所以我尝试了<span>
。但是当我使用 span 时,整个突出显示部分不起作用。由于它没有给出任何错误,我无法理解错误来自哪里。
HighlightedText.js
import React, { Component } from 'react';
import UpdatedComponent from './Hoc';
class HighlightedText extends Component {
render() {
return <h1>Highlighted Text</h1>
}
}
export default UpdatedComponent(HighlightedText);
Hoc.js
const UpdatedComponent = OriginalComponent => {
class NewComponent extends React.Component {
render() {
return(props) =>(
<div style={{ background: 'Yellow', padding: 2 }}>
<OriginalComponent {...props}/>
</div>
)
}
}
return NewComponent;
}
export default UpdatedComponent;
解决方案
问题
- 您的 HOC 看起来正试图从基于类的组件的 render 方法返回一个功能组件。
- 道具没有正确传播。
padding: 2
可能无效,它可能应该提供一个单位,无论您需要什么
解决方案
要修复突出显示,我相信您只需要为display: inline-block;
div 指定一个 CSS 规则。从基于类的组件传播this.props
到包装的组件。
const updatedComponent = (OriginalComponent) => {
class NewComponent extends React.Component {
render() {
return (
<div
style={{
background: "Yellow",
padding: "1rem", // <-- provide unit, 1rem ~ 16px
display: "inline-block" // <-- inline-block display
}}
>
<OriginalComponent {...this.props} />
</div>
);
}
}
return NewComponent;
};
推荐阅读
- performance - RxJava 与 RxGo 的性能差异
- cocos2d-js - 如何收听鼠标按钮按住
- python - Python矩阵中的乘法
- javascript - 查询对象时 JSON Fetch 返回 undefined
- github - 如何共享/扩展/重用/参考 GitHub Workflow?
- reactjs - 如何模拟一个带有“ref”的组件?
- python - 如何为具有多列的 Spark DataFrame 定义模式
- android - GCM/FCM 替代方案如何在内部工作以克服操作系统挑战
- typescript - 通过 AWS CDK Typescript 进行 VPC 对等互连(2 个 VPCS 在 2 个不同的账户中)
- c# - 禁用自定义控件Win Form的Enable Property的自定义功能