私はReactJSにアーティストオブジェクトのリストが必要です。私はReactJSのドキュメントを読んで、これが見つかりました:だから私は[OK]を、私はcomponentDidMoun()
メソッド内から(私はReduxのを使用しています)私のfetchArtists()
アクションをオフに解雇だろう、と思ったComponentDidMountでの非同期API呼び出しの作成
を。
私はそれをやっていますが、何らかの理由でそれが機能していません。私が戻ってきたアーティストのリストは、ロガーで考えてもundefined
でも、私はアーティストが返されたことがわかります。
CODE
は、ここでアプリのコンテナコンポーネントです。 mapStateToProps()
メソッド内
class App extends Component {
componentDidMount() {
this.props.dispatch(ArtistsListActions.fetchArtists());
}
render() {
return (
<div className="App">
<Header />
<Route exact path="/" render={routeProps => <ArtistList {...routeProps} artists={this.props.artists} />} />
<Route exact path="/artist/:artistUrlName" component={Artist} />
</div>
);
}
}
ArtistList.propTypes = {
artists: PropTypes.array.isRequired
};
const mapStateToProps = function(state) {
console.log('The state is:');
console.log(state);
}
export default connect(mapStateToProps)(App);
console.log(state);
はロードのアーティストと私の状態を表示する必要がありますが、私はそうではない、artists
は、その時点で空の配列です。
UPDATE
私はあなたのすべてが私のmapStateToProps()
方法でオプションを返すについて提案し、それでも動作しないことを何をしました。私はthis screencastで起こっていることを捕まえました。
あなたmapStateToProps関数はオブジェクトを返す必要がありますReactコンポーネントの小道具をプロパティとして使用します。あなたは何も返さないので、 "undefined"というエラーメッセージが表示されます。 –
@PatrickHund、しかし、私が 'console.log(state)'を書いたとき、私は少なくともそこにアーティストを見るべきではないでしょうか? – Ciwan
いいえ、コンポーネントが初めてレンダリングされるのではありません。_componentDidMount_を使用してアクションをディスパッチすると、(1)コンポーネントがレンダリングされ、DOMにアタッチされている(2)リフィックスアクションがディスパッチされている(3)データがフェッチされている(4)状態がフェッチされたデータで更新されている5)コンポーネントが再びレンダリングされる状態からのデータ –