我想知道是否可以使用: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>;
}
}
一个用例是,如果我想检查哪些额外的道具被传递到未明确定义的组件中。
要明确的是,上面的工作,更重要的是这是否是应该避免的事情 - 我知道这可能是一个有点自以为是的问题,但我还没有在其他任何地方看到它,所以,想一想我想寻找一些反馈。如果应该避免有更好的方法吗?
答案 0 :(得分:3)
不建议直接使用__proto__访问对象原型,因为此属性从未成为ECMAString标准的一部分。主要供应商已经实施它,现在它可能适用于您的React应用程序所针对的所有环境。
通常替换它是Object.getPrototypeOf()方法,您可以使用相同的方法:
Object.getPrototypeOf(this).constructor.propTypes
但无论如何,您可以直接读取该类的静态属性:
render() {
console.log(Hello.propTypes);
return <h1>Hello {this.props.name}!</h1>;
}
更喜欢这个。