【发布时间】:2020-09-17 00:38:29
【问题描述】:
基本上我正在制作一个基本的反应应用程序,它从数据库中获取一些数据,但我被困在基本设置上。
我的目的是让我的状态包含来自我的服务器查询我的数据库的响应。
我的响应是 100% 正常工作并按预期从 axios 调用发回数据,但是状态永远不会更新。
编辑:我正在尝试将电影沿链传递给名为 MovieList 的组件,我也提供了该组件的代码。
App.jsx
import React from 'react';
import axios from 'axios';
import MovieList from './MovieList.jsx';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {allMovies: []};
}
componentDidMount() {
var that = this;
axios.get('http://localhost:3000/api/movies')
.then( res => {
that.setState({allMovies: res.data});
})
.catch( err => {
console.log(`Err @ [ App.jsx - componentDidMount ] ::: ${err}`);
});
}
render() {
return (
<div>
<h1>Hello World!</h1>
<MovieList movies={this.state.allMovies} />
</div>
)
}
}
MovieList.jsx
import React from 'react';
class MovieList extends React.Component {
constructor(props) {
super(props);
this.state = {};
console.log(this.props); //EMPTY OBJECT MOVIES DIDN'T GET INTO PROPS
}
render() {
return (
<div>
<h1>Test</h1>
</div>
)
}
}
export default MovieList;
注意:我还在 mount 上记录了道具并尝试渲染它们,但它们是空的。
基本上,如果我尝试传递 this.state.allMovies 或 console.log 它,它总是只是初始的空数组。
也许我不明白如何异步设置状态?我在上一个学校项目中采用了类似的方法,并且似乎效果很好。
【问题讨论】:
-
我猜在你的电影组件中应该是
this.props.movies。
标签: javascript reactjs axios