javascript - 为什么 React JS 允许多个 "render"方法,后者覆盖了前者?

标签 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 中的错误?

最佳答案

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

class foo {}

console.log(typeof foo);

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

例如:

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

console.dir(foo.prototype.bar)

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

关于javascript - 为什么 React JS 允许多个 "render"方法,后者覆盖了前者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53342466/

相关文章:

javascript - 如何在 react 中通过 Prop 导入图像并使用 'import' 路径

javascript - ReactJS 警告 "Can' t 在 .then 处理程序中返回 Firebase promise 时对未安装的组件执行 react 状态更新

javascript - 为什么在reduce()方法中索引有时会运行异常?

php - 如何使用这样的脚本或文本编辑器批量更新位于 .html 文件中的基本一对一 key 结构?

javascript - 旋转 90/-90 度的图像模糊 jquery 旋转

javascript - 如何反转 Javascript 元素气泡顺序?

reactjs - 如何将切换绑定(bind)到单击的元素以在 react 中映射数据

reactjs - 当 prop 数据更改时,React 组件不会刷新

javascript - 隐藏 div 上的 JQuery 切换无法正常工作

javascript - 使用 javascript 验证输入的字符数量、文本长度和小数位数