Я полагаю, что причина, по которой вы это видите, в том, что реакция не может сказать, что она должна смонтировать новый экземпляр того же компонента. Изменяя один, чтобы быть обернутым в div
реакция видит, что он отличается и перемонтирует все. В противном случае, он просто воспринимает это как изменение реквизита.
Не видя реализации EditorPanel
, я не могу больше понять, но я бы предположил, что ваши неизмененные реквизиты устанавливаются только один раз на монтирование или что-то в этом роде. аналогично.
Так же, как при отображении элементов, вы можете указать key
для каждого элемента в коммутаторе, чтобы сообщить, что каждый из них уникален.
switch (currentBlockType) {
case 'description': return (
<EditorPanel
key="description" // Add this
currentBlockType={'description'}
selectedBlock={selectedBlock}
_getBlock={_getBlock}
_getCurrentInputState={_getCurrentInputState}
_setCurrentInputState={_setCurrentInputState}
/>
)
case 'skills_and_requirements': return (
<EditorPanel
key="skills_and_requirements" // Add this
currentBlockType={'skills_and_requirements'}
selectedBlock={selectedBlock}
_getBlock={_getBlock}
_getCurrentInputState={_getCurrentInputState}
_setCurrentInputState={_setCurrentInputState}
/>
)
default: return (
<EditorPanel
key="default" // Add this
currentBlockType={'default'}
selectedBlock={selectedBlock}
_getBlock={_getBlock}
_getCurrentInputState={_getCurrentInputState}
_setCurrentInputState={_setCurrentInputState}
/>
)