为什么React JS中允许使用多个“渲染”方法,而后者却覆盖了前者?

时间:2018-11-16 17:10:06

标签: javascript reactjs

为什么React JS中允许使用多个“渲染”方法,而后者却覆盖了前者?

class Test extends React.Component { render() { return(<span>First label</span>); } render(){ return( <span>Second label</span>);} }

上面的代码呈现“ Second Label”并正确编译。这是故意的还是React JS中的错误?

1 个答案:

答案 0 :(得分:1)

类基本上是函数顶部的语法糖:

class foo {}

console.log(typeof foo);

类中的方法作为属性存在于函数对象的原型上(该函数对象实际上是类。有关原型here的更多信息)。

例如:

class foo{
 bar () {console.log('random function')}
}

console.dir(foo.prototype.bar)

当您声明另一个具有相同名称的方法时,就是在一个对象(即foo.prototype对象)上声明一个具有相同名称的属性。较新的声明属性(即方法)将简单地覆盖现有属性(即较旧的方法)。