我有一个期待艺术家对象列表的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)组件再次呈现,从状态 –