Это происходит потому, что ваш компонент хочет выполнить повторную визуализацию после удаления рецепта, но перед тем, как вы вернетесь назад - он получает новые реквизиты, когда рецепт уже пропущен, и поэтому currentRecipe
не определен, а доступ к currentRecipe.image
вызывает ошибку .
Что вы можете сделать, это запретить доступ к currentRecipe, если он не существует.
Один из способов сделать это - вернуть null или заполнитель - это не самое элегантное решение:
const currentRecipe = recipes.find((r) => r.id === id);
if (!currentRecipe) return null;
Кроме того, вы можете скопировать свой рецепт из контекста в локальное состояние для чтения:
const [currentRecipe] = useState(recipes.find((r) => r.id === id));
Это будет означать, что currentRecipe
не изменится после первоначальной загрузки - не когда вы удаляете его, но также и когда пользователь редактирует его (если у него есть такая опция).