Недавно я столкнулся с довольно странной проблемой. У меня есть компонент класса в реаги, который использует избыточную форму. onChange
обработчик события вызывается в случае, если установлен флажок ввода. Два аргумента value
и type
(имя ввода) передаются в обработчик событий. Когда я консоль журнала value
, он правильно показывает предыдущее значение. Однако я не могу перевернуть это логическое значение каким-либо образом, то есть выражение !value
или let value = value?false:true
всегда возвращает истину / ложь в зависимости от начального состояния независимо от текущего состояния. Я искал в Google & SO, чтобы найти причину, но не смог найти то же самое. Любая помощь очень ценится.
Вот код для вашей справки
class Example extends Component {
constructor(props){
super(props);
this.state = {
name: true
};
this.handleChange = this.handleChange.bind(this);
};
handleChange(value, type) {
console.log(value); //outputs previous value (before toggle)
let currValue = value ? false:true; //this line is not working
console.log(currValue); //outputs the same value (irrespective of state)
}
render() {
return (
<div>
<Field component="input" type="checkbox" name="name" id="name"
onChange={({target}) => this.handleChange(target.value,target.name)}/> Name
</div>
);
}
}
function mapStateToProps(state) {
return state;
}
function mapDispatchToProps(dispatch) {
return bindActionCreators({change},dispatch);
}
export default compose(
reduxForm({
form: 'example', key: 'example',
initialValues: {
name: true
},
enableReinitialize: true
}),
connect(mapStateToProps, mapDispatchToProps)
)(Example);
Выход (переключается дважды: начальное состояние проверено)