如何根据 Reactstrap 的复选框启用/禁用输入字段

Posted

技术标签:

【中文标题】如何根据 Reactstrap 的复选框启用/禁用输入字段【英文标题】:How to enable/disable input field depending on checkbox with Reactstrap 【发布时间】:2021-10-27 14:15:03 【问题描述】:

在页面上我有reststrap,我有一个复选框,当检查这个复选框时,我想要启用的输入字段,如果未选中,则禁用输入字段。我该怎么做呢?这是我当前的代码:

import 
    Input,
    FormGroup,
    FormText,
    Form,
    Label,
    Button,
   from "reactstrap";

function HelloWorld() 
   let mpinput;
      if ((e) => e.target.checked === true) 
        mpinput = <Input type="text" name="pmInput" id="pmInput"/>
       else 
        mpinput = <Input type="text" name="pmInput" id="pmInput" disabled />
      
   return (
   ...
   <FormGroup check>
       <Label check>
           <Input type="checkbox" id="mpCheckbox" onChange=(e) => console.log(e.target.checked) />
           <Label for="mpinput">Input Field</Label>
           mpinput
       </Label>
   </FormGroup>
   )

export default HelloWorld;

我知道我做错了什么,因为它没有按我希望的方式工作,我的猜测是它与“if”语句有关,或者我遗漏了一些东西。抱歉,如果这是一个初学者问题,我仍在努力通过反应。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您需要使用状态来跟踪检查状态

function HelloWorld() 
   const [isChecked, setIsChecked] = React.useState(false)

   return (
   ...
   <FormGroup check>
       <Label check>
           <Input type="checkbox" id="mpCheckbox" onChange=(e) => setIsChecked(e.target.checked) />
           <Label for="mpinput">Input Field</Label>
           <Input type="text" name="pmInput" id="pmInput" disabled=isChecked />
       </Label>
   </FormGroup>
   )

export default HelloWorld;

在您的代码中,if 无法访问e 变量,它仅定义在onChange 回调的范围内,您需要使用它来设置该回调内部的状态,然后您就可以在其他地方使用检查状态。

我在返回时移动了输入,但您的 if 也可以与 isChecked 一起使用

【讨论】:

非常感谢您的帮助

以上是关于如何根据 Reactstrap 的复选框启用/禁用输入字段的主要内容,如果未能解决你的问题,请参考以下文章

如何根据带有闪亮元素的 R Markdown 文档中的条件禁用按钮?

启用或禁用 html 中的复选框

使用 Angular2 启用/禁用复选框字段

wpf datagridcheckboxcolumn:如何启用/禁用复选框

jQuery 基于复选框选择启用/禁用复选框

单击相应复选框时如何启用禁用的锚按钮