2017-09-28 1 views
0

누구나 console.log heightSet을 정의하지 않은 이유를 알 수 있습니까?반응에서 scrollHeight를 사용하려고 시도했습니다.

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

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

updateDimensions() { 
    this.setState({ heightSet: document.scrollHeight }); 
    console.log(document.clientHeight); 
} 

같은 CONSOLE.LOG는 window.innerHeight 근무 (clientHeight뿐만 아니라 정의되지 않은됩니다)하지만 난 scrollHeight을 원하는 내부 높이를 원하지 않는다.

감사

+0

그 이유가 될 수 없습니다 오 일반적인 왜 미정인가. 그곳에. 업데이트되었습니다. – tatsu

답변

1

scrollHeight 그래서 나는 당신이 아마 document.body.scrollHeight을 할 생각 Element의 속성입니다.

그런데 this.updateDimensions.bind(this)을 호출 할 때마다 새로운 기능이 생기므로이 방법을 사용하여 동일한 이벤트 수신기를 추가하거나 제거 할 수 없습니다.

당신은 포함하는 클래스에 생성자를 추가해야 다음 다음

constructor(props) { 
    super(props); 
    this.updateDimensions = this.updateDimensions.bind(this); 
} 

당신이 추가/직접 this.updateDimensions을 제거 할 수 있습니다

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

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

updateDimensions() { 
    this.setState({ heightSet: document.body.scrollHeight }); 
} 
+0

안녕하세요. 좋은 답변입니다. 당신은 전체 수정 코드를 넣을 수 있습니까. 나는 네가 그 사건을 경청하지 않는다고 말한 것을 시도했다. – tatsu

+0

전체 생성자 –

+0

을 추가했습니다. 그 생성자에 대해서는 신경 쓰지 않습니다. 다른 비트. 이벤트가 수신되지 않습니다 – tatsu

관련 문제