Reactでデフォルト値checked = "checked"で割り当てた後、チェックボックスの状態を更新するのに問題があります。
var rCheck = React.createElement('input',
{type: 'checkbox', checked:'checked', value: true},
'Check here');
checked="checked"
を割り当てた後、クリックしてチェックを外したりチェックしたりしてチェックボックスの状態を変更することはできません。
チェックボックスがReact.createElement
でのみ作成された場合、プロパティdefaultChecked
が使用されます。
React.createElement('input',{type: 'checkbox', defaultChecked: false});
@nash_agのクレジット
ボックスを操作するには、変更後にチェックボックスの状態を更新する必要があります。そしてデフォルトの設定をするためにはdefaultChecked
を使うことができます。
例:
<input type="checkbox" defaultChecked={this.state.chkbox} onChange={this.handleChangeChk} />
これを達成するにはいくつかの方法があります。
ES6で書かれています:
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 のライブデモです。
あるいは普通のJavaScriptでは:
var Checkbox = React.createClass({
getInitialState: function() {
return {
isChecked: true
};
},
toggleChange: function() {
this.setState({
isChecked: !this.state.isChecked // flip boolean value
}, function() {
console.log(this.state);
}.bind(this));
},
render: function() {
return (
<label>
<input
type="checkbox"
checked={this.state.isChecked}
onChange={this.toggleChange} />
Check Me!
</label>
);
}
});
React.render(<Checkbox />, document.getElementById('checkbox'));
繰り返しますが、 JSBin のライブデモで.
あなたがすることができる正しい答えに加えて:P
<input name="remember" type="checkbox" defaultChecked/>
Reactのレンダリングライフサイクルでは、フォーム要素のvalue属性がDOMの値を上書きします。制御されていないコンポーネントでは、Reactに初期値を指定させたいが、それ以降の更新は制御されないままにしておくことがよくあります。この場合を処理するために、valueの代わりにdefaultValueまたはdefaultChecked属性を指定できます。
<input
type="checkbox"
defaultChecked={true}
/>
または
React.createElement('input',{type: 'checkbox', defaultChecked: true});
以下のチェックボックスのdefaultChecked
に関する詳細を確認してください。 https://reactjs.org/docs/uncontrolled-components.html#default-values
それは働いています
<input type="checkbox" value={props.key} defaultChecked={props.checked} ref={props.key} onChange={this.checkboxHandler} />
そしてそれを初期化する関数
{this.viewCheckbox({ key: 'yourKey', text: 'yourText', checked: this.state.yourKey })}
入力チェックボックスのcheckedプロパティに "true"または ""を渡すことができます。空の引用符( "")は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>
これは私がしばらく前にしたコードです、それは役に立つかもしれません。この行で遊ぶ必要があります=> this.state = {checked: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)、それに応じて状態を設定します。チェックボックスが2回目に押されると、同じプロセスが再び実行されます。値を取得(現在は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
});
};
パート3
<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>