reactjs - 通过原始组件的功能来反应 HOC
问题描述
我创建了如下反应 HOC 组件。
const UpdatedComponent = (OriginalComponent) => {
class NewComponent extends React.Component {
constructor(props) {
super(props)
this.state = {
counter:0
}
}
componentDidMount(){
}
incrementCount = () => {
this.setState(prevState => {
return {counter:prevState.counter+1}
})
}
render(){
return <OriginalComponent
incrementCount={this.incrementCount}
count={this.state.counter}
/>
}
}
return NewComponent
}
export default UpdatedComponent
我在下面的示例中使用该组件
class HoverCounter extends Component {
componentDidMount(){
}
handleMessages = () => {
// need to do somthing
}
render() {
const {incrementCount, count} = this.props
return (
<div onMouseOver={incrementCount}>
Hoverd {count} times
</div>
)
}
}
export default UpdatedComponent(HoverCounter)
我想知道是否可以通过
handleMessages()
对 HOC 起作用?
像这样
export default UpdatedComponent(HoverCounter,handleMessages)
我不知道如何将原始组件函数或道具传递给 HOC。
解决方案
你可以像这样在你的 Hoc 中得到所有东西:
const UpdatedComponent = (OriginalComponent , func) => {
componentDidMount(){
func()
}
在 HoverCounter 中,您也可以添加以下更改:
static handleMessages(){
// need to do something
}
export default UpdatedComponent(HoverCounter , HoverCounter.handleMessages)
推荐阅读
- html - 引导列正在切断我行的左边缘
- database - 如何在 Sqlite 中找到两个日期之间的中间点
- api - 在 vuejs 中发布并获取默认到域根目录的链接
- javascript - 拖放无鬼影效果
- java - 如何从 starter 类中的方法访问私有整数(在嵌套类中声明)?
- java - 有没有办法在 Beam 的 ParDo 转换中创建 SpecificRecord 列表以编写 Parquet 文件?
- kotlin - 为什么 Kotlin 不能使用 == 推断布尔表达式的返回类型?
- asp.net-core - 如何将选定属性动态添加到 ASP MVC Core 中的选项元素
- spring - 创建 mongoTemplate 时如何解决此错误?
- reactjs - Mobx-State-Tree 改变状态时如何更新 React 组件内部函数?