2017-08-02 4 views
0

私はAPIからデータを取得していますが、ReactとReduxを使用しています。私は正常にAPIからデータを取得しています。 は、ここでの出力とはconsole.logです:APIからのデータが出力されていません| React、Redux

console.log(this.props.customer.data) enter image description here

しかし、私はそれは私のリアクトアプリで表示することができません。私は自分の問題は本当に基本的なものだと考えていますが、なぜこれがうまくいかないのか分かりません。

私はreturnのこの内部をやってみました:

{this.props.customer.data.map(customers => <p>{customers.name}</p>)} 

しかし、私はエラーを取得しています:TypeError: Cannot read property 'map' of undefined

なぜこのようなことが起こっているのか分かりましたら、教えてください。ありがとう!

(私はそれが複数の顧客を表しているので、私は、単数形で私の小道具を持つべきではないことを知っている...)

+0

最初にレンダリングしようとすると失敗しますか? 'this.props.customer.data'のデフォルト値はありますか? –

+0

デフォルト値はどういう意味ですか? –

+0

「customer.data」の初期状態は配列でなければなりません。 –

答えて

3

問題は、customer.dataの初期値がないことです。

export function customer(state = [], action) { 
    ... 
} 

配列にcustomerを設定している:あなたは、あなたの減速は、このような設定であることを別のコメントで述べました。代わりに、あなたの減速機で次のようなことをしてください:

const initialState = { 
    data: [] // <-- Default value for customer.data is an empty array 
}; 

export function customer(state = initialState, action) { 
    ... 
} 
+0

面白いのは前にそれを持っていたことですが、何らかの理由でそれを削除しました.............マイクありがとう! –

+1

@MartinNordström喜んで私は助けることができました! :) –

2

あなたはAPIからデータを取得した場合、あなたのようなものを試してみる必要がありますので、あなたは、最初のレンダリングにはデータがありませんこれは:

{this.props.customer.data ? this.props.customer.data.map(customers => 
     <p> 
     {customers.name} 
     </p>) : null} 
3

あなたは基本的に未定義/ヌルオブジェクトを反復しようとしています。良い方法は、reducexストアの配列の初期状態を空の配列に設定することです。そのため、配列に実際に存在するかどうかをチェックするために、コンポーネントに追加のチェックを追加する必要はありません。 Array.prototype.mapは、空の配列を繰り返し処理することはなく、何も描画しません。減速機の初期状態をcustomer.dataに空の配列に設定してください。

+0

私は私のレデューサーにこれを持っています: 'export function customer(state = []、action)' –

+0

あなたはあなたのレデューサーの全体のロジックを表示できますか? – lukaleli

関連する問題