如何在不重新渲染组件的情况下在表单内设置状态
How to set a state inside form without re-render component
我有一个表单,我想在其中设置状态(例如 setEducation)来自输入的传入值。我使用 onChange,但这会导致每次我对输入字段进行更改时呈现组件。解决问题的正确方法是什么?
<form id="loginform" onSubmit={onBecomeDoctorRequestHandler} >
<div className="form-group mb-3">
<label>Education</label>
<input
type="text"
className="form-control"
required
this onChange causes the placeholder="Harvard"
component to be rendered onChange={(event) => setEducation(event.target.value.trim())}
/>
<small className="text-danger form-text">
{educationError}
</small>
</div>
As-is 当任何表单元素发生变化时,您的所有表单元素都将 re-render 因为 onClick 的“值”是每次组件运行(呈现)时的新函数。
要解决此问题,请将 onClick 函数包装在 useCallback 中。 useCallback 将在渲染过程中保留函数的“值”,因此只有需要 re-rendered 的元素才会被编辑。
我有一个表单,我想在其中设置状态(例如 setEducation)来自输入的传入值。我使用 onChange,但这会导致每次我对输入字段进行更改时呈现组件。解决问题的正确方法是什么?
<form id="loginform" onSubmit={onBecomeDoctorRequestHandler} >
<div className="form-group mb-3">
<label>Education</label>
<input
type="text"
className="form-control"
required
this onChange causes the placeholder="Harvard"
component to be rendered onChange={(event) => setEducation(event.target.value.trim())}
/>
<small className="text-danger form-text">
{educationError}
</small>
</div>
As-is 当任何表单元素发生变化时,您的所有表单元素都将 re-render 因为 onClick 的“值”是每次组件运行(呈现)时的新函数。
要解决此问题,请将 onClick 函数包装在 useCallback 中。 useCallback 将在渲染过程中保留函数的“值”,因此只有需要 re-rendered 的元素才会被编辑。