Переместите ваш переход к компоненту приложения.Переход должен обрабатывать все задачи.Таким образом, он может контролировать события входа и выхода.
<div className="App">
<h1>Todo App</h1>
<input type="text" ref={ref} />
<input type="submit" onClick={() => addTodo(ref.current.value)} />
{/* */}
{transition.map(
({ item, props, key }, i) =>
item && (
<Todo
transition={props}
todo={item}
onDeleteClick={() => deleteTodo(i)}
key={key}
/>
)
)}
</div>
);
Компонент Todo будет более простым:
const Todo = ({ todo, onDeleteClick, transition }) => {
return (
<TodoContainer style={transition}>
<span>{todo}</span>
<button onClick={onDeleteClick}>X</button>
</TodoContainer>
);
};
Также убедитесь, что вы предоставилиуникальный ключ для перехода.Это помогает решить, какой компонент входит, а какой выходит.Я использовал текст todo в качестве ключа в примере.
Это пример: https://codesandbox.io/s/goofy-chaplygin-whvt4