我一直在调用我的 clickRemoveHandler。我的想法是,我有两个组件:第一个 - 渲染页眉、导航和页脚组件的布局,第二个 - 计算器,它是我的核心组件,具有数据输入等...在计算器组件中,我有具有托管状态的按钮,所以当我单击时在布局组件(div)的任何地方,我需要调用计算器函数来操作我的按钮。代码如下:
class Layout extends Component {
.....
clickHandler = (event) => {
Calculator.clickRemoveHandler(event);
console.log('Clikced')
};
.....
}
class Calculator extends Component {
state = {
currentServiceClass: null,
hoverIndex: null,
btnClicked: false,
selectedService: null
}
currentCursorPosition = {
el: null,
index: null,
rendered: false
}
static clickRemoveHandler = (event) => {
if ((!event.target.hasAttribute("type")) && (this.state.btnClicked)) {
this.currentCursorPosition = {
el: null,
index: null,
rendered: false
};
this.setState({currentServiceClass: null, hoverIndex: null, btnClicked: false})
}
}
....
}
这些组件中有很多逻辑,因此它们太强大,无法发布完整的代码。但问题是布局中没有计算器引用,计算器本身是通过另一个组件的路由渲染的,所以我无法将任何数据从布局直接传递到计算器。我想要的是从布局中调用静态 clickRemoveHandler 。我猜静态是使函数全局化的一个选项。所以它有效,但我收到错误 TypeError: undefined is not an object (evaluating 'Calculator.state.btnClicked')。正如我所见,这意味着当调用 clickRemoveHandler 时,它不与计算器组件关联,或者无法访问其状态和属性。问题是我怎样才能让这一切一起工作?调用函数时传递计算器状态还是有另一种更优雅的方法来做到这一点?
GCT1015
肥皂起泡泡
相关分类