【问题标题】:Why does named component behaves differently than anonymous component为什么命名组件的行为与匿名组件不同
【发布时间】:2021-06-01 01:05:30
【问题描述】:

我有两个功能组件。它们之间的唯一区别是一个被命名。像这样:

const one = (props) => (<div>i am the first one</div>);

switch (type) {
  case 1:
    return one;
  case 2:
    return (props) => (<div>i am the second one</div>);
}

所以问题是行为不一样。当命名组件在 props 更改后重新渲染自己时,匿名组件重新创建自己(调用 componentDidMount 和 componentDidUnmount)。谁能解释那里发生了什么?

【问题讨论】:

    标签: reactjs frontend react-functional-component


    【解决方案1】:

    命名组件创建一次,然后您在开关或其他地方使用对它的引用。

    每次调用时都会创建未命名的函数。

    Javascript 函数是对象。

    除了对自身的引用之外,该对象永远不会等于另一个对象。

    由于之前的未命名函数不等于新函数,React 重新挂载它。

    【讨论】:

    • 哦,谢谢你,我从没想过匿名函数每次调用都会创建。
    • 如果我的回答正确,请批准我的回答,这将有助于我提高声誉。谢谢。
    猜你喜欢
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多