reactjs - Material UI 的 React 评分组件是如何在表单中使用的?
问题描述
我正在尝试在 react-hook-form 中使用 Material UI 的 React 评级组件。
...
<form onSubmit={handleSubmit(onSubmit)}>
<FormControlLabel
control={
<Checkbox
inputRef={register}
name="remember"
defaultValue={false}
/>
}
label="remember"
/>
<br />
<FormControlLabel
control={
<Rating
inputRef={register}
name="rating"
defaultValue={2}
precision={1}
icon={<RadioButtonUncheckedIcon fontSize="inherit" />}
/>
}
label="select rating"
/>
<Button type="submit">
Submit
</Button>
</form>
...
我不明白为什么评级组件的值没有被注册,但复选框的值是。请在https://codesandbox.io/s/suspicious-drake-1d0kx?file=/src/form.js找到代码(提交时,评级的值不会打印到控制台,而复选框的值是)。
解决方案
根据文档,Rating
没有input
元素可以将 ref 传递给 like TextField
or Checkbox
,因此解决方案是创建一个隐藏输入来替换以存储评分值
<FormControlLabel
control={
<>
<input
name="rating"
type="number"
value={rating}
ref={register}
hidden
readOnly
/>
<Rating
name="rating"
value={rating}
precision={1}
onChange={(_, value) => {
setRating(value);
}}
icon={<RadioButtonUncheckedIcon fontSize="inherit" />}
/>
</>
}
label="select rating"
/>
下面是修改的分叉代码和框链接
推荐阅读
- python-3.x - 在 Ubuntu/Vagrant 上升级 Python3
- javafx - 使用代码 javafx 将 GridPane 添加到 ScrollPane
- cakephp - Cakedc 用户插件新表条目
- flutter - 如何创建列表,当您单击其中一个成员时,它会将其移动到收藏夹列表
- python - 如何从另一个执行python文件
- c++ - CMake:如何选择为每个源文件传递哪些包含目录
- node.js - ReactJS + NodeJS:如果未登录,如何正确重定向用户?
- javascript - 使用 JS 函数的地理编码结果 - 地址拆分
- nested-forms - Rails 5.1 form_with三重嵌套表单子(孙子??)子不继承属性且不保存
- vba - 在宏 VBA 中调整每次迭代的范围