Reactjs 我们应该何时从远程服务器获取数据?

Reactjs 我们应该何时从远程服务器获取数据?,reactjs,Reactjs,如果我们必须从远程服务器获取注释,我们将在何时执行该操作 import React, { Component } from 'react'; export class CommentBox extends Component { // ... _fetchComments() { // it updates the component's state } // Voluntarily obfuscated componentXXX() { setInte

如果我们必须从远程服务器获取注释,我们将在何时执行该操作

import React, { Component } from 'react';
export class CommentBox extends Component {
  // ...

  _fetchComments() {
    //  it updates the component's state
  }

  // Voluntarily obfuscated
  componentXXX() {
    setInterval(() => this._fetchComments(), 5000);
  }

  render() {
    // ...
  }
}

如果您发现上述实施有任何问题,请提出建议,我将实施。谢谢。

通常情况下,我们应该执行副作用即异步任务,或者仅当我们希望影响初始DOM树,或者可以说我们希望通过从远程服务器获取数据,在数据可用时尽快强制更新DOM时,才可以说componentDidMount生命周期中的网络请求

componentDidMount在将组件装入树后立即调用。需要DOM节点的初始化应该在这里进行。如果需要从远程端点加载数据,这是实例化网络请求的好地方

如果数据在初始装载时有效,则编码,因为它将使用setState重新呈现-

import React, { Component } from "react";
export class CommentBox extends Component {
    // ...

    _fetchComments() {
        // some AJAX request
        let data = null;
        // using promise to resolve the data
        ApiCall().then(responseJson => data = responseJson).catch(err => console.log(err))

        this.setState({data});
    }


    componentDidMount() {
        setInterval(() => this._fetchComments(), 5000);
    }

    render() {
        // ...
    }
}

否则,在您想要触发的事件上,完全可以使用任何自定义/用户定义的方法执行网络请求,比如单击任何按钮或更改输入,如果您想要将数据设置为状态,使用setState以确保重新渲染会更改DOM树

任何生命周期方法?这是使用setInterval在生产环境中获取数据的最佳方法吗?否,应删除生产环境的setInterval。componentDidMount将自动更新状态,无论您是否要强制设置时间间隔