【问题标题】:Pass original component's function to react HOC通过原始组件的功能来反应 HOC
【发布时间】:2021-03-10 09:55:20
【问题描述】:

我已经创建了如下的 react 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。

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    你可以像这样在你的 Hoc 中得到所有东西:

     const UpdatedComponent = (OriginalComponent , func) => {
      componentDidMount(){
          func()
      }
    

    在 HoverCounter 中,您也可以添加以下更改:

     static handleMessages(){
      // need to do something
      }
    
     export default UpdatedComponent(HoverCounter , HoverCounter.handleMessages)
    

    【讨论】:

    • 感谢您的回复。是的,我知道有些值可以通过。但想知道如何从原始组件传递类函数,例如 handleMessage 是 HoverCounter 类的类函数。有可能吗
    • 是的,你可以。你可以这样写: static handleMessages(){ // 需要做的事情 } export default UpdatedComponent(HoverCounter , HoverCounter.handleMessages)
    猜你喜欢
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    相关资源
    最近更新 更多