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);
}
通常,您与商店进行交互并抛出动作并监听商店的变化,而无需直接调用任何方法。
首先,我是 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);
}
通常,您与商店进行交互并抛出动作并监听商店的变化,而无需直接调用任何方法。