我正在学习使用前端的reactjs开发一个应用程序 .
我应该从服务器获得json的响应 . 我只对json中的特定数组对象感兴趣 . 我需要在浏览器中显示更新的数据 . 它应该在浏览器中实时更新 . 要做到这一点:我的理解是结果json应该是一个反应中的状态属性,每当它在服务器中更新时,它将在网页中重新呈现 . 我尝试了以下方法:
class app extends Component {
constructor(props){
super(props);
this.state = {
result: [],
}
componentDidMount(){
var that =this;
axios.get('url').then(function(response){
for(i=1;i<response.data.result.length;i++)
{
var array = that.state.result.slice();
array.push(response.data.result[i])
that.setState({
result: array
})
});
}
}
render(){
<div>
<h1> Result is: {this.state.result}</h1>
</div>
这会将请求一次发送到服务器并显示当时可用的数据 .
-
当初始获取后由于其他操作而在服务器中更新json时,实时数据不会在浏览器中更新 . 这不是axios.get调用的目的吗?连续获取实时数据?对不起,我对前端很新 .
-
这是正确的方法:从服务器(json的数组部分)获取的数据使用for循环直接分配状态吗?或者是否有一种更简单/正确的方法将json直接指定为组件中的状态?
-
为什么我不能在componentdidmount()方法中直接使用this.setState?我为什么要指定“var that”?如果我直接使用它抛出错误,即setstate属性无法读取null值,即使它在构造函数中被赋予初始值?
谢谢 .