【发布时间】:2018-08-17 19:56:28
【问题描述】:
我试图弄清楚如何在仅使用 prop 的无状态组件中设置禁用字段。无状态组件有一个输入字段,如果为空,我想禁用同一组件中的提交按钮。我能够通过对孩子的道具更新父母的状态,因此想保持它没有状态,但开始认为我可能需要它来检查按钮是否可以启用。
我已经尝试了使用 refs 等不同的方法。这是一个代码框项目,我有一个示例
https://codesandbox.io/s/840kkk03l
无状态道具是:
const Childprop = function(props) {
function handleNameChange(e) {
e.preventDefault();
props.onNameChange(e.target.newName.value);
}
function checkDisabled() {
var input = document.getElementById("input");
if (input.value === "") {
return true;
} else {
return false;
}
}
return (
<p>
The logged in user is: {props.nameProp}
<form onSubmit={handleNameChange}>
<input name="newName" type="text" id="input" />
<input type="submit" disabled={checkDisabled} />
</form>
</p>
);
};
谢谢
【问题讨论】:
-
您基本上需要状态才能使其工作(在此组件中或父组件中)。此外,当调用
checkDisabled时,您不能假设input#input将在 DOM 中 - 请改用ref。 -
尝试过的 ref.. 似乎在 disabled={} 内的调用无法访问/未定义 ref
标签: javascript reactjs react-component