【发布时间】:2016-05-24 09:13:00
【问题描述】:
我在下面的函数中使用 setState 收到此警告,谁能告诉我我需要如何构造我的代码来摆脱它?
warning.js:46 警告:setState(...):只能更新挂载或挂载组件。这通常意味着您在未安装的组件上调用了 setState()。这是一个无操作。请检查 FileInput 组件的代码。
componentDidMount: function () {
var self = this;
this.initUploader();
this.uploader.init();
EVENTS.forEach(function (event) {
var handler = self.props['on' + event];
if (typeof handler === 'function') {
self.uploader.bind(event, handler);
}
});
this.uploader.bind('FileUploaded', function (up, file, res) {
var objResponse = JSON.parse(res.response);
console.log(objResponse.reference);
self.props.getFileRef(objResponse.reference);
var stateFiles = self.state.files;
_.map(stateFiles, function (val, key) {
if (val.id === file.id) {
val.uploaded = true;
stateFiles[key] = val;
}
});
// setState causing warning
self.setState({ files: stateFiles }, function () {
self.removeFile(file.id);
});
});
【问题讨论】:
-
self是在哪里定义的? -
感谢回复,更新帖子
标签: javascript reactjs