![](/img/trans.png)
[英]Material-UI TextField is not updating value when using setValue of react-hook-form
[英]Changing Autocomplete value using react-hook-form (Material-UI)
我有兩個自動完成字段,我的目標是通過第一個字段的值更改第二個字段的值。
我面臨的問題是,當我嘗試將新值發送到“setValue”function 時,state 表單沒有發生任何變化,但自動完成字段顯示舊值。 在這個沙盒中: https://codesandbox.io/s/dazzling-carson-84dxp?file=/src/Form/Components/UserCountry.js
你可以看到我的實現。
如果您在更改user_name
字段時查看控制台,您可以在控制台中看到 materialUI 警告,其中顯示:
Material-UI:一個組件正在將 Autocomplete 的不受控值 state 更改為受控。
原因是您的user_country
的默認值是undefined
的,並且 material 將此字段視為不受控制的字段,這意味着 material 將控制user_country
值。 要解決該問題,您有兩種解決方案:
1-通過defaultValues
選項定義您的表單,如下所示:
const methods = useForm({
defaultValues: {
user_name: null,
user_country: null
}
});
2- 當null
作為值發送到AutoComplete
時,它沒有任何值,如下所示:
<Controller
control={control}
name={`user_country`}
render={({ field: { onChange, value } }) => (
<Autocomplete
id="country-select-demo"
options={countries}
onChange={(event, item) => {
onChange(item);
}}
value={value || null}
...
/>
)}
/>
在這里,您可以看到每當您更改user_name
字段時更新user_country
的表單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.