ComponentWillMount 触发不停止?

ComponentWillMount trigger not stop?

首先,我是 React 的新手,这是我的第一个项目。

我正在创建一个基本的博客应用程序,我的应用程序 class 如下所示:

var App = React.createClass({

    getInitialState: function () {
        return {
            posts: Store.getPosts(),
            newPost: {
                headerText: '',
                bodyText: ''
            }
        };
    },

    componentWillMount: function () {
        console.info("App component will mount")
        Store.addChangeListener(this.changeState);
    },

    componentWillUnmount: function () {
        Store.removeChangeListener(this.changeState);
    },

    componentDidMount: function() {
        console.info("App component mounted.")
        Store.removeChangeListener(this.changeState);
    } ,

    changeState: function () {
        this.setState({
            posts: Store.getPosts()
        });
    },

当我的应用程序 运行 componentWillMount 方法触发并调用 this.changeState 方法时,它从通量存储中调用 Store.getPosts() 方法。

但这件事不会停止。不断从服务器调用 xhr 请求。当应用程序启动时,我的网络控制台是这样的。

我尝试添加 componentDidMount 来解决这个问题,但在这种情况下,应用程序启动时未从服务器收到帖子。

我只想在应用程序启动时加载所有帖子,然后在调用 setState 方法时 运行。

你一次又一次地打电话,所以你的商店应该有像

这样的方法
 var _post={};
  getDataonly:function()
    {
      return _post;
    },

你必须创建一个函数来处理状态变化并在需要时调用该函数

function setpostState()
{
 return
  {
   post:Store.getPost()
 }
}

并且当您从 api 获取数据时必须设置此变量,例如

  $.ajax({
    type: "GET",
    url : config.serviceURL + "/posts"
  })
      .then(function successCallback(res) {
        if(!res.error) {
          that.posts = res.data;
          _post=res.data;
          that.emitChange();
        } else console.error(res.message);
      })

你的 main.js changeState 方法应该是

  changeState: function () {
    this.setState(setpostState());
},

可疑的是 changeState 函数。您使用的是什么通量实现?通常应如下所示:

   changeState: function (state) {
    this.setState(state);
   }

通常,您与商店进行交互并抛出动作并监听商店的变化,而无需直接调用任何方法。