我有一个跟踪文档状态的组件aDocuments
。单击按钮时,将上载文档。每个文档对象都包含处理上载的功能。在上传过程中,文档中的模式从新模式更改为上传模式。文档对象在上载期间更新模式。每个文档都是来自aDocuments数组中对象的引用,该对象位于我的状态。
当该对象可以自行更新时,如何正确处理状态中对象的更新属性?我的setState调用什么都不做,只会导致渲染。
Doc.prototype.upload = function (uploadComplete) {
if (this.mode === 'new') {
this.mode = 'uploading';
// do uploading stuff and call uploadComplete after upload is finished
$.ajax(..., complete: function() {
this.mode = 'done';
uploadComplete(this);
});
}
}
// in my component
clickHandler: function (doc) {
doc.upload(function(tmpDoc) {
// this will cause render to show the doc as done
this.setState('aDocuments', this.state.aDocuments);
});
// this will show the document as uploading
this.setState('aDocuments', this.state.aDocuments);
}
非常感谢任何帮助。
答案 0 :(得分:1)
为了更新文档数组所在的顶级组件的状态,您需要通过props(修改顶级文档数组)将回调函数传递给单个文档组件。