如何选择下面的文本字段应加载:
实际加载方式:
使用Material UI + React窗体钩子创建的My Select组件不会加载默认值。(该组件应该以选定的值开始,该值在代码的以下部分提供一次)
const clientData = await api.client.getClient(id);
reset({ ...clientData });
它发生在一个useEffect中,当页面加载并从url中获取id时,该useEffect应该运行一次。
export const ClientSourceSelect = ({
control,
clientSources,
getValues,
errors,
}: ClientSourceSelectProps) => (
<FormControl fullWidth>
<Controller
control={control}
name="clientSourceId"
render={({ field: { onChange, value } }) => (
<>
<TextField label={value}></TextField>
<Select onChange={onChange} value={value}>
{clientSources.map((clientSource) => (
<MenuItem key={clientSource.id} value={clientSource.id}>
{clientSource.name}
</MenuItem>
))}
</Select>
</>
)}
/>
</FormControl>
);
我在Select上创建了TextField,以测试值是否真的加载了,以及值是否真的显示在Select上(一个uuid对应于clientSource.id),因此值本身存在,但Select开始为空。使用检查器,li元素具有正确的data-value属性及其对应的id。
2条答案
按热度按时间6jjcrrmo1#
根据文档,您可以在调用useForm()钩子时提供默认值。
您的工作代码可以在此沙箱中找到:https://codesandbox.io/s/young-sun-7ee953
xzlaal3s2#
你能给我看看你的onChange函数吗