const List = props => {
const SubList = (number, key) => <p key={number}>{number}</p>;
const WholeList = () => props.numbers.map(SubList);
// method 1 return (<WholeList/>)
// method 2 return props.numbers.map(SubList);
};
function App() {
const [numbers, setNumbers] = useState([1, 2, 3, 4, 5]);
return (
<>
<button onClick={() => setNumbers([...numbers, numbers.length + 1])}>
Plus one
</button>
<List numbers={numbers} />
</>
);
}
Метод 1 и 2 визуализирует в точности одно и то же, за исключением того, что их поведение при повторном рендеринге отличается.
В методе 1, когда я нажимаю на Plus One и проверяю DOM, я обнаружил, что весь список повторно оказаны. Если вместо этого я использую метод 2, только новые добавленные номера вставляются в DOM. Я обнаружил, что у обоих есть свои варианты использования, но я не уверен в поведении. Кто-нибудь может пролить свет на это поведение? Может ли путаница возникнуть из-за того, что я никогда раньше не использовал компонент класса в React?
У меня есть пример codesandbox здесь!