我有一個期待藝術家對象列表的ReactJS。我讀了ReactJS文檔,並發現這一點:在ComponentDidMount上進行異步API調用
所以我想,好吧,我會從componentDidMoun()
方法內火過我fetchArtists()
行動(我使用終極版)。
我這樣做,但由於某種原因,它不工作。我回來的藝術家名單是undefined
,甚至在記錄員的想法中,我可以看到藝術家被退回。
CODE
這裏的應用容器組件。
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);
的mapStateToProps()
方法中的console.log(state);
應該顯示我裝藝術家的狀態,但我不這樣做,artists
是在這一點上一個空數組。
UPDATE
我做了什麼,你都提出關於我的mapStateToProps()
方法返回一個選項,但仍然無法正常工作。我已經捕獲了this screencast中發生的情況。
你mapStateToProps函數需要返回一個對象將React組件的道具作爲屬性。您沒有返回任何內容,因此出現「未定義」錯誤消息。 –
@PatrickHund,但是當我'console.log(state)',我不應該至少看到那裏的藝術家嗎? – Ciwan
不,不是第一次渲染組件。如果使用_componentDidMount_派遣一個動作,即裝置(1)的組件被提供,而且附加到DOM(2)了Redux動作被分派(3)的數據被取出(4)的狀態下與所提取的數據來更新( 5)組件再次呈現,從狀態 –