我遇到了一个大问题,其中有一个函数无法访问react中组件的道具:
renderRow(employee) {
console.log('props here', this.props); //undefined
}
但是当我把它改成一个胖箭头函数时,它工作得很好
renderRow = (employee) => {
console.log('props here', this.props); //success?
}
这是为什么呢?我有什么不明白的?
胖箭头函数可以工作,因为箭头函数中的this
不会重新绑定,这有助于保持上下文,并且在运行时不会更改。
虽然vanilla中的this总是引用外部作用域,但要在vanilla函数上使用this,您必须使用. bind()方法将其绑定到员工函数
在第一个示例中,此
有另一个作用域。
employee
是第二个示例中的范围,这就是为什么此
引用了employee
为了便于讨论。假设第一个函数是正规函数,第二个函数是箭头函数
首先,让我们了解,对于JS中的每个正常函数执行,JS引擎都会创建自己的执行上下文。然后为每个执行上下文创建一个新的“this”,从而属于该函数。
现在,当它与您的案例相关时,第一个函数中的this关键字
renderRow(employee) {
console.log('props here', this.props); //undefined
}
引用自身(或当前正在调用它的函数),因为JS引擎已经创建了一个引用它的新this对象。因此,当程序运行时,this.props的值将为undefined,因为它未在当前执行上下文中定义(这也是您的renderRow函数)
另一方面JS引擎不会为该箭头函数创建新的。简单地说,箭头函数没有自己的函数,因此在第二个示例中,
renderRow = (employee) => {
console.log('props here', this.props); //success!!!
}
这指的是外部执行上下文(这是您的React组件),所以现在this.props工作。
有关主题的更多信息,您可以查看这些资源...
这-https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
箭头功能-https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
希望这有帮助:)
我在Java中使用嵌套类时遇到问题,有人知道为什么Java不允许我这样做吗?
问题内容: 我正在编写一个简单的程序来测试基本的GUI。该程序在屏幕中间打印一个字母,并允许用户使用箭头键移动它。一切正常,但是当我尝试在程序开始时将字母居中时,似乎and 函数未返回正确的数字。 这是包含我的Panel类的代码片段 为什么我和函数返回“ 0”? 谢谢你的帮助 问题答案: 我不能说出原因,但: 避免这种情况的一种方法是重写函数并返回您的首选大小。
如果我有一个数据帧并重命名了列,则无法用其新名称访问列。 见示例说明: 现在,如果我按照这里建议的方式重命名列“a”。 现在,让我们尝试使用“newname”访问该列 但我仍然可以使用旧名称访问该列。 似乎我已经更改了列的名义名称,但这种更改并没有传播到数据帧结构中用于区分列的字典中。 问:为什么会发生这种行为,我如何修复它?
我有下面的子组件。道具从父级中的输入选择器更新。为什么 不更新孩子的 家长: 孩子:
伊登 JLS所说的是: 设C是ClassName表示的类。设n是一个整数,使得C是类的第n个词汇封闭类,在该类中出现有条件的this表达式。 [...] 如果当前类不是类C或C本身的内部类,则为编译时错误。 在的情况下,内部类集。这意味着上面的代码应该可以正常工作。发生了什么?