首页 > 解决方案 > 在没有箭头函数的回调中反应访问 setState

问题描述

我正在为公司 Intranet 开发代码。使用箭头函数构建基础后,我在 Internet Exploder 中进行了测试。发现它不接受箭头函数。我在这个项目中使用 React,并且已经重构了所有代码以使用经典函数调用。

除了一个小故障外,它大部分都有效:我无法从函数调用内部访问它。

这是一个代码示例,尽管还有其他示例:

<NavLink onClick={function () { 
    this.setState({ openCount: item.pageId }); 
    this.props.CurrentPage_Update(item) 
    }
} 
className="menu menu-link" 
key={"DDNavLink_" + item.pageId}>
{item.title}
</NavLink>

如何访问所有函数调用的“this”对象?我尝试按顺序创建一个变量,var set=this.setState;但失败了,尽管它确实适用于绑定函数。

尽管我已经阅读了有关 babel 的信息,但我不确定该去哪里,但对它的使用和功能完全不可知,尤其是对于这样一个看似简单的重构。

谢谢

标签: javascriptreactjsthisreact-component

解决方案


在每个函数调用结束时,我使用 .bind(this) 使函数能够使用外部 this 而不是内部。

//blah blah blah
}.bind(this)

我发现如果函数中有任何对 this 的调用,我必须在每个右大括号的末尾执行此操作。无论是否有必要,我都计划让它成为每个经典函数调用的习惯。


推荐阅读