我们来看一下const App = () => {}
和function App() {}
的区别:
const App = () => {}
:这是一个箭头函数(arrow function)定义。箭头函数是ES6引入的一种新的函数语法,它提供了一种更简洁的方式来定义函数。箭头函数不会创建自己的this
上下文,所以它总是从定义它的上下文中继承this
。箭头函数没有自己的arguments
对象,因此使用arguments
是不正确的。如果需要访问组件的props
,可以直接在参数列表中定义它们。function App() {}
:这是一个常规函数定义。在类组件中,通常使用这种语法来定义组件。常规函数有自己的this
上下文,所以它不从外部作用域继承this
。常规函数也有自己的arguments
对象。
那react中,const function = ()=>{}和function(){},使用this.function能在别处被调用到吗
在React中,如果在类组件中定义了一个函数,无论是使用箭头函数 () => {}
还是普通函数 function() {}
,都可以在组件的其他部分调用它。
但是,如果是在组件的实例方法中定义一个函数,并且使用 this
关键字(这在常规JavaScript类中是常见的,但在React类组件中并不常见),那么这个函数只能在组件的实例方法内部被调用,不能从外部调用。
例如,以下是在React类组件中定义函数的方式:
class MyComponent extends React.Component {
myFunction = () => {
}
render() {
return
<button onClick={this.myFunction}>
Click me
</button>;
}
}
此处myFunction
是一个类组件中的实例方法,可以通过 this
来调用。在 render
方法中,创建了一个按钮,当按钮被点击时,它会调用 this.myFunction()
。
如果想从外部调用这个函数,可以考虑将其定义为组件的静态方法:
class MyComponent extends React.Component {
static myStaticFunction() {
}
render() {
return
<button onClick={MyComponent.myStaticFunction}>
Click me
</button>;
}
}
这个myStaticFunction
是一个静态方法,可以通过组件的类名直接调用,而不需要通过实例。