2017-02-09 3 views
1

액션 발송 후 구성 요소에 반영되지 않는다 :
1. mapStateToProps 상태에 포함되어 있음 login.fetching: true
2. 감속기에 작업을 전달한 직후의 구성 요소 this.props.login.fetchingfalse .
3. 구성 요소 render()에서 this.props.login.fetchingtrue입니다.

이유가있는 경우 2. 여전히 false입니다. 여기에 누락 된 부분이 있습니까?mapStateToProps 내가 다음과 같습니다 감속기가

액션 파견 :

onLoginPress =() => { 
    this.props.dispatch(loginUser(this.state.email.trim(), this.state.password.trim())) 
console.log(this.props); 
+0

작업을 파견하는 곳의 코드를 구체적으로 표시 할 수 있습니까? – bencrinkle

+0

질문이 업데이트되었습니다. – 1110

+2

배송 상태가 변경된 후 곧바로 소품이 보이지 않을 것입니다. 그 경우에만 다시 렌더링에 나타납니다, 그 소리에 의해 당신이보고있는 무엇입니까? – bencrinkle

답변

2

대답, 당신은 정말 간단하게 얻을 수있다 false 직후에 당신 dispatch 그래서 심지어 props 수정 얻을 당신의 console.log(this.props)라고하기 전에, 따라서 그것 때문에 자바 스크립트의 async nature의 행동, 이전 값을 표시합니다. 그러나 render() 함수는 감속기 변경에서 상태를 나타낼 때 호출되므로 업데이트 된 값이 표시됩니다. 당신이 파견에 Promise 나는 희망이

onLoginPress =() => { 
    this.props.dispatch(loginUser(this.state.email.trim(), this.state.password.trim())).then(() => { 
    console.log(this.props); 
}) 

, 내가 제대로 설명 할 수 있었다

사용이 필요한 것은

.

+0

완벽하다고 설명하셨습니다. 내가 파견 할 때 약속을 사용할 수 있는지 몰랐다. – 1110

+0

감사합니다. 도움을 주셔서 감사합니다. :) –

관련 문제