在 ReactJS 中,我正在编写一个无状态组件;
因为我读过避免不必要的状态是最佳实践。
该组件表示当输入框包含值时执行功能的输入字段。
export const InputField = (props) => {
const InputFieldContentsChanged = (event) => {
props.onChange(event.target.value);
};
return (
<div data-component="input-field"
className={(props.value !== "" ? "value": "")}>
<input type={props.type} value={props.value} onChange={InputFieldContentsChanged} />
<span className="bar"></span>
<label>{props.label}</label>
</div>
);
};
InputField.PropTypes = {
type: PropTypes.oneOf([ "text", "password" ]).isRequired,
label: PropTypes.string.isRequired,
value: PropTypes.string,
onChange: PropTypes.func.isRequired
}
现在,我创建了另一个组件,它只是用于测试上述组件的示例。如下所示:
export const SampleComponent = (props) => {
let componentUsername = "";
const onUsernameChanged = (username) => {
componentUsername = username;
};
return (
<InputField type="text" label="Username" value={componentUsername} onChange={onUsernameChanged} />
);
};
因此,我将 绑定value
到组件中的自定义变量,当输入字段的内容发生更改时,该变量会更改。
为什么输入字段组件不使用新用户名更新自己?
亲切的问候,