我想知道是否可以通过使用以下方式访问React组件类中定义的PropType:this["__proto__"]["constructor"]["propTypes"]
例如,如果我有这个组件:
class Hello extends React.Component {
static propTypes = {
name: string
};
render() {
console.log(this.props);
console.log(this["__proto__"]["constructor"]["propTypes"]);
return <h1>Hello {this.props.name}!</h1>;
}
}
一个用例是,如果我想检查哪些附加属性传递到了未明确定义的组件中。
要明确的是,上述确实有效,更多的是这是否应该避免的问题 - 我知道这可能是一个有点固执己见的问题,但我在其他地方没有看到它,所以,我想我会寻找一些反馈。如果应该避免有更好的方法吗?
最佳答案
使用 __proto__ 直接访问对象原型(prototype)不推荐,因为此属性从未成为 ECMAString 标准的一部分。主要供应商确实实现了它,并且现在它可能会在您的 React 应用程序所针对的所有环境中运行。
通常的替代品是 Object.getPrototypeOf()您可以使用相同的方法:
Object.getPrototypeOf(this).constructor.propTypes
但无论如何,你都可以直接读取类的静态属性:
render() {
console.log(Hello.propTypes);
return <h1>Hello {this.props.name}!</h1>;
}
更喜欢这个。
关于reactjs - 如何检查哪些附加 Prop 被传递到未定义的 react 组件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49280659/