[英]Form.Control type password in React-Bootstrap always renders an default password that i can't remove
[英]Can I programmatically update the values of React bootstrap <Form.Control> after it's been updated?
是否可以在用户编辑 React Bootstrap <Form.Control>
后更新它的值?
我在 React 中创建了一个带有四个受控字段的小型 Bootstrap 表单。 详情如下。 提交工作,但我想要一种以编程方式更新各个字段的值的方法,既可以重置表单,也可以填写一组常见的默认值。
setFormContents
)一直有效,直到字段被更新。 在此之后,更新传递给<Form.Control>
的defaultValue
的值。 这是有道理的,但我不确定首选的方法是什么。formContents
和setFormContents
与<MyForm>
的父元素分类。表单的 state 和相关的更新 function 是通过props
提供的
define MyForm(props)
return <Form
onSubmit={(e) => {
e.preventDefault();
onSubmit(props.formContents);
}}
>
<Form.Group className="mb-3" controlId="field1">
<Form.Label>Field 1</Form.Label>
<Form.Control
defaultValue={props.formContents.val1}
onChange={({ target: { value } }) =>
props.setFormContents({ ...props.formContents, val1: value })
}
/>
</Form.Group>
///... Other <Form.Group>s
</Form>
就我而言,更新适用于所有领域。 我的解决方案是以StackOverflow 响应为模型的,它是在更新表单之前重置表单。
<form>
元素的引用。 const [formDOM, setFormDOM] = useState(null);
<Form>
元素的ref=
属性来捕获 DOM 元素。 state 的类型为?HTMLFormElement
<Form
ref={(form) => props.setFormDOM(form)}
...
>
onClick={(e) => {
if (props.formDOM != null) {
props.formDOM.reset();
}
props.setFormContents(...);
}}
您还可以使用useRef()
以编程方式访问您的From.Control
:
const inputRef = useRef(null);
[...]
<Form.Control
ref={inputRef}
defaultValue={props.formContents.val1}
onChange={({ target: { value } }) =>
props.setFormContents({ ...props.formContents, val1: value })
}
/>
然后访问该值:
inputRef.current.value = someValue;
在您的情况下,在您的onClick
function 中:
onClick={(e) => {
...
inputRef.current.value = "";
}
这种方法不太简洁,因为您必须在每个字段上执行此操作,但允许独立控制每个 From.Control 的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.