Answers:
要与复选框进行交互,您需要在更改复选框后更新其状态。要使用默认设置,可以使用defaultChecked
。
一个例子:
<input type="checkbox" defaultChecked={this.state.chkbox} onChange={this.handleChangeChk} />
render
与上述<input>
元素一起使用。的defaultChecked
可以作为像PARAM提供checked
IS。
有几种方法可以完成此操作,以下是几种方法:
使用State Hooks编写:
function Checkbox() {
const [checked, setChecked] = React.useState(true);
return (
<label>
<input type="checkbox"
checked={checked}
onChange={() => setChecked(!checked)}
/>
Check Me!
</label>
);
}
ReactDOM.render(
<Checkbox />,
document.getElementById('checkbox'),
);
这是JSBin上的现场演示。
使用组件编写:
class Checkbox extends React.Component {
constructor(props) {
super(props);
this.state = {
isChecked: true,
};
}
toggleChange = () => {
this.setState({
isChecked: !this.state.isChecked,
});
}
render() {
return (
<label>
<input type="checkbox"
checked={this.state.isChecked}
onChange={this.toggleChange}
/>
Check Me!
</label>
);
}
}
ReactDOM.render(
<Checkbox />,
document.getElementById('checkbox'),
);
这是JSBin上的现场演示。
如果仅使用创建复选框,React.createElement
则使用该属性
defaultChecked
。
React.createElement('input',{type: 'checkbox', defaultChecked: false});
归功于@nash_ag
在React渲染生命周期中,表单元素上的value属性将覆盖DOM中的值。对于不受控制的组件,您通常希望React指定初始值,但使后续更新不受控制。要处理这种情况,可以指定defaultValue或defaultChecked属性而不是value。
<input
type="checkbox"
defaultChecked={true}
/>
要么
React.createElement('input',{type: 'checkbox', defaultChecked: true});
请defaultChecked
在下面查看有关复选框的更多详细信息:https :
//reactjs.org/docs/uncontrol-components.html#default-values
除了正确的答案,您也可以执行:P
<input name="remember" type="checkbox" defaultChecked/>
checked
。
您可以将“ true”或“”传递给输入复选框的checked属性。空引号(“”)将被理解为false,并且该项目将被取消选中。
let checked = variable === value ? "true" : "";
<input
className="form-check-input"
type="checkbox"
value={variable}
id={variable}
name={variable}
checked={checked}
/>
<label className="form-check-label">{variable}</label>
true
boolean属性的字符串checked
。尽管此方法有效,但如果传递字符串“ false”,则无法按预期工作。已检查= {true}?”
就我而言,我认为“ defaultChecked”在状态/条件下无法正常工作。因此,我使用“ checked”和“ onChange”来切换状态。
例如。
checked={this.state.enabled} onChange={this.setState({enabled : !this.state.enabled})}
这是我前一段时间做的代码,可能有用。您必须使用此行=> this.state = {选中:false,checked2:true};
class Componente extends React.Component {
constructor(props) {
super(props);
this.state = { checked: false, checked2: true};
this.handleChange = this.handleChange.bind(this);
this.handleChange2 = this.handleChange2.bind(this);
}
handleChange() {
this.setState({
checked: !this.state.checked
})
}
handleChange2() {
this.setState({
checked2: !this.state.checked2
})
}
render() {
const togglecheck1 = this.state.checked ? 'hidden-check1' : '';
const togglecheck2 = this.state.checked2 ? 'hidden-check2' : '';
return <div>
<div>
<label>Check 1</label>
<input type="checkbox" id="chk1"className="chk11" checked={ this.state.checked } onChange={ this.handleChange } />
<label>Check 2</label>
<input type="checkbox" id="chk2" className="chk22" checked={ this.state.checked2 } onChange={ this.handleChange2 } />
</div>
<div className={ togglecheck1 }>show hide div with check 1</div>
<div className={ togglecheck2 }>show hide div with check 2</div>
</div>;
}
}
ReactDOM.render(
<Componente />,
document.getElementById('container')
);
的CSS
.hidden-check1 {
display: none;
}
.hidden-check2 {
visibility: hidden;
}
的HTML
<div id="container">
<!-- This element's contents will be replaced with your component. -->
</div>
这是codepen => http://codepen.io/parlop/pen/EKmaWM
不要太努力。首先,了解下面给出的一个简单示例。这对您很清楚。在这种情况下,只需按下复选框,我们就会从状态中获取值(最初为false),将其更改为其他值(最初为true)并相应地设置状态。如果第二次按下该复选框,它将再次执行相同的过程。抓取值(现在为true),将其更改为(false),然后相应地设置状态(现在再次为false)。下面共享代码。
第1部分
state = {
verified: false
} // The verified state is now false
第2部分
verifiedChange = e => {
// e.preventDefault(); It's not needed
const { verified } = e.target;
this.setState({
verified: !this.state.verified // It will make the default state value(false) at Part 1 to true
});
};
第三部分
<form>
<input
type="checkbox"
name="verified"
id="verified"
onChange={this.verifiedChange} // Triggers the function in the Part 2
value={this.state.verified}
/>
<label for="verified">
<small>Verified</small>
</label>
</form>
这可以用纯js来完成
<Form.Group controlId="categoryStatus">
<Form.Check
type="checkbox"
label="Category Status Active/In-active"
onChange={this.handleChecked}
/>
</Form.Group>
//Load category to form : to edit
GetCategoryById(id) {
this.UpdateId = id
axios.get('http://localhost:4000/Category/edit/' + id)
.then(response => {
this.setState({
category_name: response.data.category_name,
category_description: response.data.category_description,
is_active: response.data.is_active,
});
response.data.is_active == 1 ? document.getElementById("categoryStatus").checked = true : document.getElementById("categoryStatus").checked = false;
})
.catch(function (error) {
console.log(error);
})
}
<div className="form-group">
<div className="checkbox">
<label><input type="checkbox" value="" onChange={this.handleInputChange.bind(this)} />Flagged</label>
<br />
<label><input type="checkbox" value="" />Un Flagged</label>
</div>
</div
handleInputChange(event){
console.log("event",event.target.checked) }
上述句柄在选中或未选中时为您提供true或false的值
我将状态设置为any []类型。并在构造函数中将状态设置为null。
onServiceChange = (e) => {
const {value} = e.target;
const index = this.state.services.indexOf(value);
const services = this.state.services.filter(item => item !== value);
this.setState(prevState => ({
services: index === -1 ? prevState.services.push(value) && prevState.services : this.state.services.filter(item => item !== value)
}))
}
在输入元素中
this.onServiceChange(e)} /> this.onServiceChange(e)} /> this.onServiceChange(e)} /> this.onServiceChange(e)} />
一段时间后,我想通了。以为这可能对大家有帮助:)