2017-09-21 2 views
0

문제는 상태가 정의되지 않은 상태입니다. nextProps.userid의 첫 x 째 콘솔 로그는 올 Y 른 사용자 ID를 표시하지만 상태는 변경되지 않으며 두 x 째 콘솔 로그는 다시 널입니다.반응 소품이 상태를 업데이트하지 않음

class Profile extends React.Component { 
    constructor(props) { 
    super(props); 
    this.state = { 
     user: this.props.userid, 
    }; 
    } 

    componentWillReceiveProps(nextProps){ 
    console.log('PROFILE USERID', nextProps.userid) 
    const userid = nextProps.userid 
    this.setState({user:userid}) 
    console.log('PROFILE USERID 2', this.state.user) 
    } 

답변

0

setState은 비동기입니다. 따라서 setState 직후에 국가의 가치가 바뀔 것으로 기대할 수는 없습니다. setState 바로 뒤에 상태를 기록하면 이전 상태가 표시됩니다. 업데이트 된 상태 값을 보려면 다음과 같이 setState에 콜백을 전달해보십시오.

this.setState({user:userid},() => { 
    console.log('PROFILE USERID 2', this.state.user) 
}); 
관련 문제