2016-04-08 22 views
1

Pencere nesnesinde yeniden boyutlandırma olayı için bir olay dinleyicim olduğu bir React Uygulaması var.React yeniden boyutlandırma bileşenleri değiştir

class App extends React.Component { 
    constructor(props){ 
    super(props); 

    this.state = { width: 0 } 
    this.setSize = this.setSize.bind(this); 
    } 

    render() { 
    let content = this.state.width < 600 ? <MobileComponent/> : <DesktopComponent />; 
    return(<div>{content}</div>) 
    } 

    setSize() { 
    this.setState({ 
     width: window.innerWidth 
    }); 
    } 

    componentDidMount() { 
    this.setSize(); 
    window.addEventListener('resize', this.setSize); 
    } 

    componentWillUnmount() { 
    window.removeEventListener('resize', this.setSize); 
    } 
} 

Bu şey iş ama benim sorunum ben çocuk bileşenleri içine Uygulama bileşeni (pencere genişliği) durumunu erişmek için nasıl bilmiyorum olmasıdır.

Yani birinin/erişmek (i sahne ile gönderebilir biliyorum, ama benim, ben 2 daha fazla bileşen ne varsa?)

+0

bunu sahne üzerinden yapabilir ve çok sayıda alt öğe bileşenine gönderebilirsiniz. – Ved

cevap

3
 render() { 
     let content = this.state.width < 600 ? <MobileComponent/> : <DesktopComponent />; 
     return(<div> 
      <div>{content}</div> 
      <childComponent myWidth= {this.state.width}></childComponent > 
      <childComponent2 myWidth= {this.state.width}></childComponent2 > 
     </div> 
    ) 
} 
Çocuklarım bileşenlerindeki this.state.width nasıl gönderileceği bana açıklayabilir
+0

Cevabınız için teşekkür ederiz ve childComponent childComponent'e sahipse, ben de sahne eklemem gerekir mi? Onun iyi bir uygulama? – Hiero

+0

Evet. yapabilirsin. Eğer bir çocuk bileşeni çocuk bileşenine sahipse, aynı yaklaşımı da takip et. – Ved

İlgili konular