2017-12-31 73 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}) 

}。

リデューサー/ reducer_appointment.js

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; 
    } 
} 

app.js

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。私は、データがないときに偽のケースが働くことを望む。

更新

私は_.mapKeysはundefinedを返し、結果を確認しました。だから私はこの投稿を疑問に思って投稿しました!

私を助けてください! _.mapKeysは常に、少なくとも空のオブジェクトを返すので、私は推測している

+0

'mapKeys'は何を返しますか?/@Krasimirの回答を見てください –

+0

@palaѕn私は既定の状態の結果を得ることを上記で述べました。 – Diamond

+0

データが返されない場合は未定義、データが返された場合は約束します。大丈夫ですか? – Diamond

答えて

7

。したがって、ペイロードがundefinedであっても、あなたの状態は{}です。

+0

というコードを追加して、問題を解決する方法を教えてください。返信ありがとう – Diamond

+0

結果を確認しましたが、_.mapKeysは未定義を返します。だから私はこの投稿を疑問に思って投稿しました! – Diamond

+0

@Diamondフラグを使用し、 'null'、' false'、 'undefined'には依存しないことをお勧めします。彼らは確かにより多くのバグを作り出すでしょう。あなたが深く掘り下げたいと思うなら、私はステートマシンの使用についてこの記事にあなたを指摘するつもりです。http://krasimirtsonev.com/blog/article/managing-state-in-javascript-with-state-machines-stent – Krasimir

関連する問題