在组件外部声明内部函数有什么区别吗?

时间:2019-01-20 13:34:40

标签: javascript reactjs

考虑以下示例:

const foo = string => "bar" + string;

class Example extends React.Component {
  foo = string => "bar" + string
  
  render = () => <p>
    {foo("asd"); this.foo("asd")}
  </p>
}

我唯一想到的是,组件体内的函数可以访问其属性,例如props,state以及包括函数在内的体内任何东西,但是我们也可以将它们作为外部函数的参数进行传递。那么,这是唯一的“优势还是劣势”?或者还有更高级的东西?

1 个答案:

答案 0 :(得分:1)

对于React Native,在类外部声明一个函数就像创建一个静态函数。如果将函数放置在类中,则将为该类的每个实例创建该函数,在这种情况下将是不必要的。

在您的示例中,我将考虑foo()应该只在该文件内使用还是在其他文件内使用。对于后者,请创建一个名为utils /的单独文件夹,将函数放在其中,然后将其导入您需要的位置。

关于道具,您可以在类外部创建函数并使用call()调用它,然后可以访问道具:

foo.call(this);

const foo =()=> console.log(this.props);