reactjs - react Prop 上的受控复选框(切换)。

标签 reactjs

我需要制作一个复选框(切换,如IOS)组件,它不使用状态并且仅通过 Prop 进行控制。当前代码如下所示:

export class Checkbox extends React.Component {

handleChange(event) {
   this.props.onChange({value: event.target.value});
}

render() {
    return (
        <span>
             <input class="ios_toggle" type="checkbox"
                 value={this.props.value}
                 disabled={this.props.disabled}
                 onChange={this.handleChange}
             />
        </span>
     );
 }
}

我这样使用它:

<Checkbox value={true} disabled={false} />

它几乎可以工作,但是:

  1. 它看起来未经检查,即使 props 等于 value={true}
  2. 通过单击此切换按钮,它会发生变化,但它不应该发生变化。我的意思是,如果我放置 prop value={true} ,理论上它会是相同的,无论我在浏览器中使用它做什么?

我错过了什么?

最佳答案

您需要使用checked属性而不是value。尝试这样的事情:

export class Checkbox extends React.Component {

  handleChange = () => {
     this.props.onChange({ checked: !this.props.checked });
  }

  render() {
      return (
          <span>
               <input class="ios_toggle" type="checkbox"
                   value={this.props.value}
                   disabled={this.props.disabled}
                   checked={this.props.checked}
                   onChange={this.handleChange}
               />
          </span>
       );
   }
}

value 属性可以是任何内容,但实际驱动切换的属性称为 checked

关于reactjs - react Prop 上的受控复选框(切换)。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45617722/

相关文章:

reactjs - header 中的 React-Admin JWT token

javascript - ESLint - 组件应编写为纯函数( react 首选/无状态函数)

javascript - React Textarea 状态无法更新

javascript - react : Big Calendar Font Style

javascript - 类型错误 : Cannot read property 'cwd' of undefined

reactjs - 如何在 React 中链接到另一个页面?

javascript - 使用 Redux 处理异步文件上传

javascript - 在提交表单之前,所需的文本区域以红色突出显示

reactjs - 在 React 日期选择器中更改日期时出现问题

javascript - 带yield的条件赋值