3 回答
TA贡献2065条经验 获得超14个赞
一些注意点:
使用驼峰命名法作为函数名
使用 props值使复选框完全受控
使用禁用属性来禁用输入元素
在处理函数内设置相关状态
document.getElementById
在你目前的情况下不需要处理程序事件不是
id
,如果您只需要id
,请将其作为参数传递this.handler(id)
演示:
const App = () => {
const [checked, setChecked] = React.useState(false);
const [status, setStatus] = React.useState(true);
const onChangeHandler = () => {
setChecked(!checked);
setStatus(false);
};
return (
<div className="App">
<input
type="checkbox"
value={checked}
disabled={!status}
onChange={onChangeHandler}
/>
</div>
);
};
ReactDOM.render(<App />, document.getElementById("root"));
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.12.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.12.0/umd/react-dom.production.min.js"></script>
TA贡献1853条经验 获得超18个赞
你应该必须附加id到 element 上。
let Disable=(id)=>{
if(id){
document.getElementById(id).disabled = true
}
}
<span>
<input type="checkbox" className="form-check-input" onChange="Disable(this.id)" id="one" value=""/>
<input type="checkbox" className="form-check-input" onChange="Disable(this.id)" id="two" value=""/>
<input type="checkbox" className="form-check-input" onChange="Disable(this.id)" id="three" value=""/>
</span>
TA贡献1859条经验 获得超6个赞
event在匿名箭头函数中传递 并将其作为 in 接受argument并eventHandler(component method)使用event.target在需要访问调用者的情况下,有适当的方法可以做到这一点。
class Stack extends Component {
Disable = event => {
event.target.disabled = true;
//another method to execute onChange
};
render() {
return (
<span>
<input
type="checkbox"
className="form-check-input"
onChange={event => this.Disable(event)}
value=""
/>
<input
type="checkbox"
className="form-check-input"
onChange={event => this.Disable(event)}
value=""
/>
<input
type="checkbox"
className="form-check-input"
onChange={event => this.Disable(event)}
value=""
/>
</span>
);
}
}
- 3 回答
- 0 关注
- 143 浏览
添加回答
举报