Я думаю, что, как вы упомянули, предпочтительным способом является использование onChange для обновления состояния для каждого контролируемого входа, а затем для установки значения входа в значение в вашем состоянии.Затем, нажав «Отправить», вы запускаете функцию, которая может проверять ваши входные данные перед отправкой значений в конечную точку.
В вашем примере вы можете установить логическое значение в своем состоянии, если каждый вход действителен, который вы используете какусловие в выходных данных вашей таблицы:
{this.state.formValid && this.state.games.map(games => ...
Один из способов достижения этого состоит в том, что вы можете использовать обработчик onChange для помещения текущего значения во временную ячейку состояния, скажем, ваш вход имеетидентификатор «title», затем используйте this.setState({ [event.target.id]: event.target.value })
, затем в обработчике отправки создайте объект из временных значений, чтобы вставить его в массив игр и, наконец, очистить значения title, rating и price в состоянии?
Это немного дрянной пример того, что я имею в виду, хотя я сделал это с помощью хуков и имею некоторое повторение со значениями useState, которые можно было бы сделать лучше с помощью useReducer, например: https://codesandbox.io/s/peaceful-moore-jrjpg