Javascript 如何防止在React中使用纯子级的纯组件重新招标?
我有一个功能性的React组件,我在其中使用Javascript 如何防止在React中使用纯子级的纯组件重新招标?,javascript,reactjs,performance,memoization,Javascript,Reactjs,Performance,Memoization,我有一个功能性的React组件,我在其中使用React.memo来防止不必要的重新加载。如果它仅包含一个作为子项的字符串,则仅当该字符串发生更改时(如预期的那样)才会呈现该字符串。但是,当我添加另一个也使用React.memo的子组件时,它总是被重新提交(即使子组件没有重新提交)。以下是指示这些情况的示例代码: const Parent = React.memo(() => <div> Parent </div>) // Rendered only once! c
React.memo
来防止不必要的重新加载。如果它仅包含一个作为子项的字符串,则仅当该字符串发生更改时(如预期的那样)才会呈现该字符串。但是,当我添加另一个也使用React.memo
的子组件时,它总是被重新提交(即使子组件没有重新提交)。以下是指示这些情况的示例代码:
const Parent = React.memo(() => <div> Parent </div>) // Rendered only once!
const Parent=React.memo(()=>Parent)//只渲染一次!
第二种情况:
const Child = React.memo(() => <div> Child </div>); // Rendered only once!
const Parent = React.memo(() => <Child />); // Rerendered everytime
const Child=React.memo(()=>Child);//只渲染一次!
const Parent=React.memo(()=>);//每次重播
更清楚地说,在第二种情况下,父级总是被重新命名(好像未使用
React.memo
)。显然,没有必要重新命名它,因为它的子级不会重新命名,因此父级的子级不会更改。我有什么遗漏吗?如何更改实现以避免重新提交父组件?您的第二个案例应该可以工作,至少对我来说是这样。记忆不是由函数内部控制的,而是由外部控制的。它使用道具。那么,可能是您的简化案例不包含导致意外行为的外部因素吗?您发布的代码没有演示您所描述的行为,这取决于Parent
的呈现方式,请提供一个最小的可复制示例。您的第二个案例应该可以工作,至少对我来说是这样。记忆不是由函数内部控制的,而是由外部控制的。它使用道具。那么,您的简化案例是否不包含导致意外行为的外部因素?您发布的代码没有演示您描述的行为,这取决于父级
的呈现方式,请提供一个最小的可重复性示例。