我想获取一个电影数组,然后它提取列表它更新状态和列表应该呈现,但问题是渲染方法从来没有从内部调用爱可信的回调,这里是低于React - render()没有用axios调用setState
export default class Movies extends Component {
constructor(props){
super(props);
this.state={movies:[]};
}
componentDidMount(){
axios.get('URL')
.then(response => {
this.setState({movies:response.data});
console.log("Movies",this.state);// I get the values here see screenshot..
});
}
render(){
return(
<div className="row">
<div className="col-md-3">
<MovieList movies={this.state.movies}/>
</div>
<div className="col-md-6">Movie Details</div>
</div>
);
}
}
我的代码,你可以在爱可信回调见上面的代码中,在函数componentDidMount
我的响应值设定的状态,但它不调用后呈现这样做,块确实执行得不错,因为我得到日志正确地看到下面的截图
我不明白为什么它不叫render()
?我已经尝试了几个解决方案,但没有为我工作,如果我在视频阵列默认状态下硬编码它工作正常,请帮助,如果有人知道解决方案。
更新(添加MovieList代码)
class ListItem extends Component {
render(){
return(
<li className="list-group-item">{this.props.moviename}</li>
);
}
}
export default class MoviesList extends Component {
constructor(props) {
super(props);
console.log("Props",props);
this.state={movies:props.movies};
}
renderList(){
const items=this.state.movies.map((movie) => <ListItem moviename={movie.name} key={movie.name}/>);
return items;
}
render(){
return(
<ul className="list-group">
<li className="list-group-item"><h3>Movies</h3></li>
{this.renderList()}
</ul>
);
}
}
感谢。
你可以显示'MovieList'组件如何渲染电影数组?把'console.log('render')'放在渲染方法里,一旦你做了'setState',它就会打印出来。 –
确保MovieList中的电影组件具有密钥,以便React可以知道要重新呈现的内容。 (编辑感谢@azium) – Storm
@Storm MovieList应该没有密钥。里面的孩子可能会做,如果它是一个组件阵列 – azium