为什么命名组件的行为与匿名组件不同

Why does named component behaves differently than anonymous component

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

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)。谁能解释一下那里发生了什么?

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

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

Javascript 函数是对象。

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

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