我有一个简单的函数(在React组件中):
getInitialState: function() {
return {
text: this.props.text
}
}
但我想胖了它:
getInitialState: () => {
text: this.props.text
}
除了我收到错误,因为胖箭头后面的{
表示返回undefined的代码块(除非你明确return
某事)。至少这是我一开始的想法。但我认为this
现在受限于胖箭头功能,现在this.props
为undefined
。
所以我试试这个:
getInitialState: () => new Object({
text: this.props.text
})
但是我得到了同样的错误,this.props
未定义。
所以我想我有2个问题,我很好奇。首先,从简单的语句胖箭头函数返回对象的惯用方法是什么?其次,如何返回一个引用周围上下文的this
对象的对象?
答案 0 :(得分:3)
用括号括起来,就像这样
StackLayout
没有括号,对象文字看起来也像一个带有标签<StackLayout Orientation="Horizontal" HeightRequest="90" VerticalOptions="Start">
<Button Text="Button1" />
<Button Text="Button2" />
<Button Text="Button4" />
<Button Text="Button5" />
<Button Text="Button6" />
</StackLayout>
的JavaScript块。由于它不明确,因此抛出SyntaxError。但当你用getInitialState: () => ({
text: this.props.text
})
包围它时,JavaScript知道它是一个Object文字。
我认为现在这个箭头函数受到了限制
箭头功能没有text
。在箭头函数中遇到()
时,它将转到上一级,以查看this
是否可用并使用它。您可以像这样确认
this
会打印
this
在您的情况下,(function Test1() {
console.log(this);
(() => console.log(this))();
}).bind({a: 1})();
将引用声明它的函数的{ a: 1 }
{ a: 1 }
对象,而不是对象本身。