2016-08-13 3 views
0

나는이 질문이 아주 기본적인 경우에 Ember 세계에서 이렇게 사과한다 (나는 확실하다). 나는 창을 스크롤 할 때마다 상태 "scrollPosition"을 설정하는 구성 요소가 있습니다. 새로운 상태 속성 인 "isScrolledToTop"을 정의하려고합니다.이 값은 "scrollPosition"이 0 일 때 true입니다.다른 상태 속성을 기반으로 상태를 정의하려면 어떻게해야합니까?

Ember에서는 새로운 속성을 간단하게 정의하고 scrollPosition이 변경된 경우 조건을 확인했습니다. React에서이 작업을 수행하는 방법을 잘 모릅니다. 나는 "componentDidUpdate"를 사용할 생각 이었지만 이것이 올바른 접근법이 아니라는 것을 확신했다. 사전에 도움을 주셔서 감사합니다!

+0

[React.js에서 구성 요소의 업데이트 스타일 onScroll] (http://stackoverflow.com/questions/29725828/update-style-of-a-component-onscroll-in-react-js) –

+0

고마워. 이것은 이벤트 리스너를 추가하고 하나의 상태를 업데이트하는 방법을 배우는 데 유용했습니다. 지금 내가 흥미 롭다는 것이 더 일반적입니다. 다른 상태가 변경 될 때 한 상태 속성을 어떻게 업데이트 할 수 있습니까? –

+0

아마도 이것이 당신이 찾고있는 대답이 아니지만 같은 상태에서 두 번째 상태 변수를 설정할 수 없습니다. scrollPosition 상태를 업데이트하는 함수? – azium

답변

0

"사용자가 페이지의 맨 위로 스크롤하면 어떻게하면 어떤 이벤트가 발생합니까?"라고 묻는다면 대답은 onscroll 이벤트 콜백에서 수행하는 것입니다.

다르게 뭔가 (예를 들어 최대 크기의 헤더) 스크롤 위치가 페이지 상단에있을 때, 그 논리 구성 요소의 render() 방법에 갈 것 렌더링 하려면

. 같은 뭔가 : 워드 프로세서의

render() { 
    if (this.state.scrollPosition === 0) { 
    // do something specific to this scenario 
    } 
    return ... 
} 

This partisScrolledToTop이 무엇 상태에서 '계산 된 데이터를'퍼팅 하지 제안합니다.

참고로, 스크롤 위치를 추적하는 경우 창 개체는 이것을 '상태'로 유지합니다 (window.scrollY에서 사용 가능). 구성 요소의 상태로 복제 할 필요가 없습니다.

관련 문제