我正在学习使用前端的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值,即使它在构造函数中被赋予初始值?

谢谢 .