我不知道如何准确描述我所面临的问题,所以标题可能毫无意义。
我正在使用react 15.4.2,mobx 3.0.0
我有一个无状态功能Blah
组件,它接受一个对象thing
作为道具
thing
具有可观察的属性
正如所料,当传入thing
的不同实例时,Blah组件会相应更新
Blah
组件有另一个组件,它基本上是名为DzComponent
的 react-dropzone-component 的包装器。
传递给react-dropzone-component的参数之一是success
事件处理程序。当我们删除某些内容并成功上传时,会调用此方法。
问题在于这一系列事件:
Blah
调用A
DzComponent
正确获得handleImageUpload
引用。即成功时,当我们致电props.thing.observable
时,它指的是实例A
Blah
调用B
DzComponent
似乎仍然引用旧handleImageUpload
引用。即成功后,props.thing.observable
仍然引用实例A
而不是预期的实例B
如何让事件处理程序更新正确的实例?
Blah.jsx
import React from 'react';
import {observer} from 'mobx-react';
function Blah(props) {
function handleImageUpload(evt, res) {
props.thing.observable = res.image_url
}
return (
<div>
<div>blah blah blah {props.thing.otherObservable}</div>
<DzComponent success={handleImageUpload}></DzComponent>
</div>
)
}
Blah.propTypes={
thing: React.PropTypes.object
}
export default observer(Blah)
DzComponent.jsz
import React from 'react';
import DropzoneComponent from 'react-dropzone-component';
function DzComponent(props) {
return <DropzoneComponent></DropzoneComponent>
}
export default observer(DzComponent);
答案 0 :(得分:1)
我刚检查过http://jsbin.com/bulubuwuzo/1/edit?js,console,output
一切正常
也许您在DzComponent
或DropzoneComponent
组件