2017-04-14 84 views
0

JS中的类仍然是一个函数。所以我的理解是,当我们创建Wrapped1时,它会将它与应用绑定在一起,因为它位于它内部,但显然Wrapped1有它自己的范围。我无法弄清楚我错在哪里。如何在React中的高阶组件中定义作用域?

let HigherOrderComp = (Component) => class extends React.Component{ 
    construstor(props){ 
    super(props); 
    this.state = { 
     count: 0 
    }; 
    } 

    componentDidMount(){ 
    setInterval(()=>{ 
     this.setState(
     count: this.state.count + 1 
    ); 
    }, 1000) 
    } 

    render(){ 
    return <Component {...this.props} {...this.state}> 
    } 
} 

    class Comp1 extends React.Component{ 
    render(){ 
     return(
     <div> 
      <p>Comp1</p> 
      {this.props.count} 
     </div> 
    ); 
    } 
    } 

let Wrapped1 = HigherOrderComp(Comp1); 

class App extends React.Component{ 
    constructor(props){ 
    super(props); 
    } 
    render(){ 
    return(
     <div> 
     <Wrapped1/> 
     </div> 
    ); 
    } 
} 

ReactDOM.render(<App/>, document.getElementById('app')); 

回答

0

Wrapped1一个实例里面App创建的,所以它没有任何的App知识。如果您需要从Wrapped1内访问App实例,则应该将您需要的数据作为道具传递。

+0

谢谢,通用React体系结构的内部组件不知道封闭组件还是来自Javascript? –

相关问题