2016-10-23 5 views
0

이 아이디어를 구현하는 방법은 다음과 같습니다.React : 렌더링하기 전에 몇 가지 검사를 실행하십시오.

렌더링하기 전에 확인하고 싶습니다. check보다 렌더링이 틀린 경우. 하지만 검사가 거짓이면, 우선 나는 setState을해야하고, 렌더링 후에 만해야합니다.

감사합니다.

+0

아마도'componentDidMount() {}'안에 있습니까? –

+0

'render() {}'는 setState를위한 장소가 아닙니다. 컴포넌트 라이프 사이클 메소드에서 상태를 처리해야합니다 : https://facebook.github.io/react/docs/react-component.html – kouak

+0

이 질문을했다. 내 crome 렌더링에'setState' 사용에 대한 실수를 제공합니다. –

답변

1

나는 componentWillMount()이 문자 그대로 당신이 무엇을하고 있는지 생각하지만, constructor()에 넣는 것이 더 좋은 장소 일 수 있습니다.

class MyComponent extends React.Component { 
    constructor(props) { 
    super(props); 
    if (theCheck() === false) { 
     this.state = { 
     // ... 
     } 
    } 
    } 
} 
+0

수퍼는 무엇입니까? 그리고 왜 우리는 ** setState **가 아닌 ** state **를 사용합니까? –

+2

'super()'는 확장 한 클래스에서 원래 생성자 함수를 호출합니다. 이 경우'React.Component'의 생성자를 호출합니다. 'setState()'는 상태가 변경 되었기 때문에 React에게 컴포넌트를 다시 렌더링해야한다고 알려주는 방법입니다. 'this.state' 만 업데이트하면 어떤 차이점도 발견되지 않습니다. 구성 요소가 아직 렌더링되지 않았기 때문에 생성자에서'this.state'를 사용하는 것이 유효합니다. – casr

관련 문제