为什么命名组件的行为与匿名组件不同
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 重新挂载了它。
我有两个功能组件。它们之间的唯一区别是一个被命名。像这样:
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 重新挂载了它。