A recursive <TreeNode> component renders its children by mapping over `node.children` and rendering <TreeNode> again. Performance is poor on a large tree. Which approach correctly reduces re-rendering of unchanged subtrees?
function TreeNode({ node }) {
return (
<li>
{node.label}
<ul>{node.children.map(c => <TreeNode key={c.id} node={c} />)}</ul>
</li>
);
}