【发布时间】:2017-10-02 07:57:00
【问题描述】:
我正在使用对组件的引用来强制触发其父级过滤器表单的重置。
在同一个组件中:
handleFilterReset() {
// this.filterForm is defined but reset() isn't exposed
// see console.log(this.filterForm) output below
this.filterForm.reset()
}
render() {
return (
<FilterBox onReset={::this.handleFilterReset}>
<FilterForm ref={(ref) => { this.filterForm = ref }} />
</FilterBox>
)
}
在 FilterForm 中我们有:
class FilterForm extends React.Component {
reset() {
// this is not being called
}
}
console.log 输出:
ProxyComponent {props: Object, context: Object, refs: Object, updater: Object, _reactInternalInstance: ReactCompositeComponentWrapper…}
在我看来,一切都是按照official docs 完成的。但是,我收到以下错误:
未捕获的类型错误:this.filterForm.reset 不是函数
在 SalesChannelsList.handleFilterReset
谢谢
【问题讨论】:
-
非常基本的建议 Thibaut,可能是 React 版本的东西,但根据提供的文档,它应该是
class FilterForm extends React.Component- 你错过了React.。 -
@Gorbles,也许他会忘记在帖子里写,但如果你像
import React, {Component} from 'react'一样导入,你可以这样做 -
您正在使用
::进行绑定,您可以尝试使用handleFilterReset = () => {并像<FilterBox onReset={this.handleFilterReset}>一样调用 -
@Gorbles 实际上我使用 import React, { Component } from 'react'。我试图在示例中使代码尽可能简单以过滤掉噪音,但我将编辑问题以便澄清事情:)
-
@ShubhamKhatri 试过了,还是不行。正在调用 handleFilterReset(),所以我认为问题不在这里......
标签: javascript reactjs