У меня есть компонент, который представляет собой форму, которую я использую для создания записей в моей базе данных.Я также хочу иметь возможность передать в этот компонент значения, которыми можно заполнить форму, что позволит мне затем обновить существующие записи в базе данных.Простая функциональность добавления / редактирования из того же компонента.
Следующий код должен объяснить, как я это делаю.media
prop - это объект, содержащий данные.У меня есть эти данные уже в родительском элементе, поэтому установка значений здесь в порядке, и они проходят без проблем.Однако, как только страница загружается, 3-й init
аргумент useReducer
никогда не запускается повторно, и поэтому мое состояние не может быть переопределено значениями, переданными в media
проп.Есть ли правильный способ вызвать функцию init
при обновлении реквизита, или моя проблема архитектурная?
const MediaUploadForm = ({ media }) => {
const init = (initialState) => {
if (media) {
// ... here I extract the values I need and override the initialState where required
} else {
return initialState
}
}
const [formState, dispatch] = useReducer(
MediaFormReducer,
initialState,
init
)