//Хочу сделать универсально для разных стейтов и для _count задавать какой именно стейт.
counter(cond, _count){
if(cond==true) this.setState({ _count: _count+1})
}
<h1>{this.state.count}</h1>
<Button onClick={()=> this.counter(true, this.state.count) }> +++ </Button>
counter(cond, stateField){
if(cond==true) {
const newState = {};
newState[stateField] = this.state[stateField] + 1;
this.setState(newState);
}
}<Button onClick={ this.counter.bind(this, true, someStateField }> +++ </Button>
constructor(...props) {
super(...props);
this.state = {
eng_oneoff_patwaitappoint:false,
OneOffPSCount:0,
}
counter(cond, stateField){
const newState = {};
if(cond==true) {
//подскажите что в newState происходит
newState[stateField] = this.state[stateField] + 1;
this.setState(newState);
} else {
newState[stateField] = this.state[stateField] - 1;
this.setState(newState);
}
}
render() {
return (
{this.state.OneOffPSCount}
<Input type="checkbox" checked={this.state.eng_oneoff_patwaitappoint} label="Patient waiting for Appointment"
onChange={ ()=>{
this.setState({ eng_oneoff_patwaitappoint: !this.state.eng_oneoff_patwaitappoint });
this.counter.bind(this, this.state.eng_oneoff_patwaitappoint,' eng_oneoff_patwaitappoint'); }} /> export class CheckBox extends React.Component {
constructor(props) {
super(props);
this.state = {
eng_oneoff_patwaitappoint: false,
OneOffPSCount: 0
}
}
counter(cond, stateField){
const newState = {};
if(cond === true) {
newState[stateField] = this.state[stateField] + 1;
this.setState(newState);
} else {
newState[stateField] = this.state[stateField] - 1;
this.setState(newState);
}
}
render() {
return (
<input type="checkbox" checked={this.state.eng_oneoff_patwaitappoint} label="Patient waiting for Appointment" onChange={this.counter.bind(this, !this.state.eng_oneoff_patwaitappoint,'eng_oneoff_patwaitappoint')} />
)
}
}
export class CheckBox extends React.Component {
constructor(props) {
super(props);
this.state = {
firstCheckBox: false,
secondCheckBox: false
}
}
counter(stateField){
const newState = {};
newState[stateField] = !(this.state[stateField]);
this.setState(newState);
}
render() {
return (<div>
<input type="checkbox" checked={this.state.firstCheckBox} label="First checkbox" onChange={this.counter.bind(this, 'firstCheckBox')} />
<input type="checkbox" checked={this.state.secondCheckBox} label="Second checkbox" onChange={this.counter.bind(this, 'secondCheckBox')} />
</div>)
}
}
{this.state.OneOffPSCount}
onChange={ ()=> {
this.counter( !this.state.eng_oneoff_eldwelc, 'OneOffPSCount' );
this.setState({ eng_oneoff_eldwelc: !this.state.eng_oneoff_eldwelc }); }} />this.counter( this.state.eng_oneoff_eldwelc, 'OneOffPSCount' ); те false на true уже задали, то заходит в функцию пердыдущий стейт, до изменения... а так все работает. То что я и хотел. Спасибо this.setState({ eng_oneoff_eldwelc: !this.state.eng_oneoff_eldwelc }, () => {
this.counter( this.state.eng_oneoff_eldwelc, 'OneOffPSCount' );
})