React容器范围未被组件继承

时间:2018-08-01 10:46:14

标签: javascript reactjs scope components containers

我已经分离了容器和组件,现在面临着重新渲染组件的问题。

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方法中发送的参数,这是一个问题因为我无法访问容器道具并重新渲染组件。

如何在容器中定义的回调方法中重新呈现组件?

1 个答案:

答案 0 :(得分:0)

这似乎是上下文绑定问题。

如果要在DomainEdit内部调用updateSubType,并且在此回调中仍然有指向容器引用的this,则必须将updateSubType绑定到容器实例。

有两种方法可以做到这一点: 在容器的构造函数中,重新定义this.updateSubType = this.updateSubType.bind(this);

或者,如果您使用的是ES6,请按以下方式定义updateSubType:

updateSubType = () => {
    ...method definition
}

箭头函数符号(() => {})会将函数自动绑定到周围的实例。