【发布时间】:2026-02-15 09:15:01
【问题描述】:
在摆弄别人编写的 React 代码时,我偶然发现了这种模式:
// So far so good:
const displayName = 'aComponentsName'
const propTypes = {
// not important
}
const aFunctionalComponent = () => 'someJSX, not important'
// That's what baffles me:
aFunctionalComponent.displayName = displayName
aFunctionalComponent.propTypes = propTypes
我知道从技术上讲,函数是对象,它们可以有属性,甚至方法:
const func = () => 'somevalue'
func.foo = 'foo'
func.bar = 'bar'
func.baz = () => 'hello world'
console.dir(func) // Sadly, can't be expanded in SO sandbox, but the props are there
console.log(func.foo, func.bar)
console.log(func.baz())
我的问题是:可以吗?你用它吗?将一堆(相当静态的)类似状态的属性注入到无状态组件中是一种巧妙的方法,还是我应该避免的一种黑客攻击?
【问题讨论】:
-
这取决于
foo和bar的用途。
标签: javascript reactjs function object properties