useEffect(() => {
if (!isEditing) {
setIsDialogOpen(false); // this happens first
}
}, [isEditing]);
useEffect(() => {
if (!isDialogOpen) {
setIsEditingTool(false); // this should happen second
}
}, [isDialogOpen]);
isEditing - это реквизит, пришедший из состояния избыточности. Текст заголовка диалога («Добавить» / «Редактировать») отображается в зависимости от состояния isEditingTool (устанавливается во втором состоянии useState). Состояние isEditing должно изменяться только после закрытия диалога, чтобы текст не изменялся до закрытия диалога. Я перепробовал много вариантов (setTimeout / usePrevious hook / useLayoutEffect), но он не работает. Есть ли какой-то выход, единственная оставшаяся возможность - сделать отдельные компоненты, чего я не хочу. Здесь я использую два состояния, устанавливая isEditingTool только после закрытия диалога. в моем понимании будет два разных рендера.