2017-12-31 59 views
0

행동 /하는 index.js왜 (undefined || false) 표현식이 제대로 작동하지 않았습니까?

export const fetchAppointment = (userId) => async dispatch =>{ 
const request = await axios.get(`${URL}/apis/appointments/${userId}`) 
    dispatch({type :types.FETCH_APPOINTMENT, payload:request.data}) 

};

감속기/

import _ from 'lodash'; 
import * as types from '../actions/types'; 
export default function(state = null, action) { 
    switch (action.type) { 
     case types.FETCH_APPOINTMENT: 
      return _.mapKeys(action.payload, 'patients_id') || false 
     default: 
      return state; 
    } 
} 

내가 데이터 또는 전혀 데이터를 얻을 수 있지만 난 항상 기본 경우를 얻을 수

renderAppointment(){ 
    console.log(this.props.appointment) 
    switch(this.props.appointment){ 
    case null: 
     console.log("null case") 
     return; 
    case false: 
     console.log("false case") 
     return <div>false case</div>; 
    default: 
     console.log("default case") 
     return <div>default case </div>; 
    } 
} 

porblem을 app.js reducer_appointment.js. 데이터가 없을 때 거짓 사례가 작동되기를 바랍니다.

업데이트 내가 결과를 확인

는 _.mapKeys는 undefined를 반환합니다. 그래서 나는이 게시물을 궁금해하고 게시했습니다!

도와주세요!

+0

'mapKeys'는 무엇을 반환합니까?/@Krasimir에서 답을보세요 –

+0

@ palaѕn 나는 위에서 언급 한 기본 상태 결과를 얻었습니다. 데이터가 반환되지 않으면 – Diamond

+0

은 정의되지 않거나 데이터가 반환되면 약속합니다. 괜찮습니까? – Diamond

답변

7

_.mapKeys은 항상 적어도 빈 개체를 반환하기 때문에 추측됩니다. 페이로드가 undefined이라도 귀하의 상태는 {}입니다.

+0

으로 console.log를 얻으므로 문제를 해결하기 위해 코드를 어떻게 개선 할 수 있습니까? 답장을 보내 주셔서 감사합니다 – Diamond

+0

결과를 확인한 후 _mapKeys는 정의되지 않은 값을 반환합니다. 그래서 나는이 게시물을 궁금해하고 게시했습니다! – Diamond

+0

@Diamond 플래그를 사용하고 'null', 'false' 및'undefined '에 의존하지 말 것을 제안합니다. 그들은 확실히 더 많은 버그를 생산할 것입니다. 더 깊이 파고 싶다면 상태 머신 사용에 관한이 기사를 가리 키도록하겠습니다. http://krasimirtsonev.com/blog/article/managing-state-in-javascript-with-state-machines-stent – Krasimir