#reactjs #redux #react-redux #material-ui #redux-toolkit
#reactjs #redux #реагировать-redux #материал-пользовательский интерфейс #redux-toolkit
Вопрос:
Мне сложно присвоить значение по умолчанию форме React hook с использованием объекта React Redux.
Я использую react-hook-form, Redux toolkit и materiauli. Похоже, что проблема связана с текстовым полем materialui, но я все еще не могу ее решить.
Инициализация
const dispatch = useDispatch()
const category = useSelector(state => state.inventory.categories.category)
useEffect(() => {
dispatch(getCategoryData(id))
}, [])
Инициализация формы React Hook
const { register, handleSubmit, reset } = useForm({
defaultValues: {
name: category.name
}
})
JSX не работает
< TextField
name='name'
id='name'
label='name'
variant='outlined'
InputLabelProps={{
shrink: true,
}}
className={classes.form__item}
inputRef={register}
/>
Комментарии:
1. Используете ли вы эту библиотеку react-hook-form.com ? Пожалуйста, укажите это в своем вопросе. Также, пожалуйста, укажите, какой фреймворк пользовательского интерфейса вы используете.
2. Вы пробовали передавать значение по умолчанию непосредственно в текстовое поле?
<TextField defaultValue={category.name} /*... */ />
.3. да. я сделал это следующим образом defaultValue ={category.name }
4. но это не работает .. это работает для обычного текста, но когда я это сделал — значение = {category.name } это работает .. также это работает -<input defaultValue={category.name }/>
Ответ №1:
вероятно, это проблема с рендерингом, когда обработка формы устанавливает значения по умолчанию до того, как redux завершит выборку данных. например, если вы добавили дополнительное useEffect
предложение, используя reset
from useForm
, я подозреваю, что форма будет заполнена значениями по умолчанию.
const { register, handleSubmit, reset } = useForm({
defaultValues: {
name: category.name
}
})
useEffect(() => {
reset({ name: category.name })
},[category])