2017-05-17 194 views
0

我想弄清楚爲什麼onload事件永遠不會被調用。所有內容都沒有錯誤,類似onLoad事件在不同的組件中起作用。 出口類工作擴展React.Component {onLoad事件永遠不會觸發

constructor(props) { 
    super(props); 


    this.state = { 
     allImgLoaded: false, 
     boxHovered: false, 
     projects: projects 
    } 
this.handleWorkLoad = this.handleWorkLoad.bind(this); 

    } 

componentWillMount() { 
    window.scrollTo(0,0); 
} 

handleWorkLoad() { 
    console.log("called"); 
    this.setState({ 
    allImgLoaded: true 
    }) 
} 

    render() { 

    return (
    <div className={this.state.allImgLoaded ? "work" : "work invisible"} onLoad={this.handleWorkLoad}> 

     </div>  
    ); 
    } 
}; 

export default Work; 

回答

1

在反應你有componentDidMount方法,讓你以後組件完成它的裝載階段來運行特定代碼的能力:

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


     this.state = { 
      allImgLoaded: false, 
      boxHovered: false, 
      projects: projects 
     } 
     this.handleWorkLoad = this.handleWorkLoad.bind(this); 

    } 

    componentWillMount() { 
     window.scrollTo(0,0); 
    } 

    componentDidMount() { 
     this.handleWorkLoad() 
    } 

    handleWorkLoad() { 
     console.log("called"); 
     this.setState({ 
      allImgLoaded: true 
     }) 
    } 

    render() { 

     return (
      <div className={this.state.allImgLoaded ? "work" : "work invisible"}> 
      </div>  
     ); 
    } 
}; 

export default Work; 

沒有onLoad事件爲div元素反應。

+0

如果div是多個圖像的父項,該怎麼辦?在這裏就是這種情況,儘管我已經把它切斷了。我是否必須在每個圖像上加載並計算它是否全部加載?感覺不自然 – Sebastian

+0

反應中的'img'元素有'onload'事件,但'div'元素不。至於你的問題 - 是的,你需要這樣做每個img標籤(這將是完全相同的情況下沒有反應) – Dekel

相關問題