我已经分离了容器和组件,现在面临着重新渲染组件的问题。
render() {
return <DomainEdit schema={this.props.schema} domain={this.domain} formData={this.props.formData} updateSubType={this.updateSubType} types={this.props.types}/>;
}
我正在发送updateSubType
方法,该方法是更改表单中任何内容时的回调方法。
更改后,我会发回更改内容,并且必须更新this.props.schema以便使用新架构重新呈现组件。
我面临的问题是回调方法this
是组件的范围,而不是容器本身,换句话说,组件仅具有我在render方法中发送的参数,这是一个问题因为我无法访问容器道具并重新渲染组件。
如何在容器中定义的回调方法中重新呈现组件?
答案 0 :(得分:0)
这似乎是上下文绑定问题。
如果要在DomainEdit内部调用updateSubType,并且在此回调中仍然有指向容器引用的this
,则必须将updateSubType绑定到容器实例。
有两种方法可以做到这一点:
在容器的构造函数中,重新定义this.updateSubType = this.updateSubType.bind(this);
或者,如果您使用的是ES6,请按以下方式定义updateSubType:
updateSubType = () => {
...method definition
}
箭头函数符号(() => {}
)会将函数自动绑定到周围的实例。