为什么React JS中允许使用多个“渲染”方法,而后者却覆盖了前者?
class Test extends React.Component { render() { return(<span>First label</span>); } render(){ return( <span>Second label</span>);} }
上面的代码呈现“ Second Label”并正确编译。这是故意的还是React JS中的错误?
答案 0 :(得分:1)
类基本上是函数顶部的语法糖:
class foo {}
console.log(typeof foo);
类中的方法作为属性存在于函数对象的原型上(该函数对象实际上是类。有关原型here的更多信息)。
例如:
class foo{
bar () {console.log('random function')}
}
console.dir(foo.prototype.bar)
当您声明另一个具有相同名称的方法时,就是在一个对象(即foo.prototype对象)上声明一个具有相同名称的属性。较新的声明属性(即方法)将简单地覆盖现有属性(即较旧的方法)。