Итак, у меня есть модель по умолчанию, настроенная для просмотра моих данных, и форма для ввода данных. Я хочу знать, как лучше всего получить один элемент выбранных данных? это для стека MERN
В настоящее время я использую хеш окна и добавляю идентификатор в URL-адрес и таким образом извлекаю из базы данных, хотя я чувствую, что это дрянно, и пытаюсь добавить функциональность обновления, похоже, это может сбить с толку.
Я думал о добавлении currentID в redux, но потом я вижу проблемы, возникающие, когда он сохраняется, и вы переходите к созданию рецепта после просмотра и заканчиваете редактированием вместо создания.
получение идентификатора из URL
const recipeId = window.location.hash.substr(1);
const recipe = useSelector((state) =>
state.recipes.find((r) => r._id === recipeId)
);
Я получаю свои рецепты от монго
export const recipeList = async (req, res) => {
try {
const recipes = await recipeSheet.find();
res.status(200).json(recipes);
} catch (error) {
res.status(404).json({ message: error.message });
}
};
и сохранить в редукцию
export const getRecipes = () => async (dispatch) => {
try {
const { data } = await api.fetchRecipes();
dispatch({ type: "FETCH_ALL_RECIPES", payload: data });
} catch (error) {
console.info(error.message);
}
};





Это зависит от размера ваших данных. Лучше определить новый путь GET для получения одной записи, например BASE_URL/api/recipes/123, или вы можете добавить принятие запроса для текущей конечной точки, чтобы найти конкретный идентификатор в БД и вернуть его, например BASE_URL/api/recipes?id=123. Причина этого в том, что помимо оптимизации (для больших наборов данных), запись может измениться после того, как вы сохраните все записи в хранилище redux, а текущее решение покажет пользователю старые данные. Лучшие практики говорят нам выбрать первый способ в качестве решения, второй способ обычно предназначен для фильтрации данных. Затем, просто отправив новый URL-адрес пользователем, инициируйте новый вызов API для новой конечной точки и получите единственную запись.