我正在使用Reactjs。我正在使用Modal from react-bootstrap
创建模态表单。我使用bootstrap创建了一个表单。表单包含默认情况下需要检查的复选框。所以我使用checked
属性作为输入复选框。但是当我点击它时,复选框不会切换。我无法弄清楚这个问题。这是我的代码:
<Modal show={this.state.showModal} onHide={this.closeModal}>
<Modal.Header closeButton>
<Modal.Title>Create New User</Modal.Title>
</Modal.Header>
<Modal.Body>
<form class="form-horizontal" name="newUser">
<div class="form-group">
<label class="control-label col-md-4" for="userName">User Name</label>
<div class="col-md-6">
<input type="text" class="form-control" id="userName" ref="userName" placeholder="User Name"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-4" for="password">Password</label>
<div class="col-md-6">
<input type="password" class="form-control" id="password" ref="password" placeholder="Enter Password"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-4" for="password">Confirm Password</label>
<div class="col-md-6">
<input type="password" class="form-control" id="confirmPassword" ref="password" placeholder="Re-enter Password"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-4" for="email">Email Address</label>
<div class="col-md-6">
<input type="email" class="form-control" id="email" ref="email" placeholder="Email Address"/>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-4 col-md-6">
<div class="checkbox-inline">
<label><input type="checkbox" id="enabled" ref="enabled" value="enabled" checked/> Enabled </label>
</div>
<div class="checkbox-inline">
<label><input type="checkbox" id="locked" ref="locked" value="locked" /> Locked </label>
</div>
</div>
</div>
</form>
</Modal.Body>
<Modal.Footer>
<Button onClick={this.submitUser} bsStyle="primary">Confirm</Button>
<Button onClick={this.closeModal} bsStyle="warning">Cancel</Button>
</Modal.Footer>
</Modal>
答案 0 :(得分:3)
观看控制台日志,React通常会说很多关于你的组件的方法。在这种情况下,它说:
警告:表单propType失败:您为表单提供了
checked
道具 没有onChange
处理程序的字段。这将呈现为只读 领域。如果该字段应该是可变的,请使用defaultChecked
。除此以外, 设置onChange
或readOnly
。检查渲染方法FileList
。
所以只是:
defaultChecked={this.state.enabled}
代替checked={this.state.enabled}
答案 1 :(得分:1)
就我而言,我觉得“ defaultChecked”无法正常工作。因此,我将“ checked”和“ onChange”用于切换状态。
例如。
checked={this.state.enabled} onChange={this.setState({enabled : !this.state.enabled})}