0
Когда отмечено, добавьте в массив. Если флажок снят, удалите из массива. Мой код ниже работает, но null
находится на своем месте. Мне нужно полностью удалить его. Как?Удалить из массива, если его непроверено с помощью React
...
getInitialState: function(){
return{
email: this.props.user,
product: []
}
},
_product: function(){
if (this.refs.opt1.checked) {
var opt1 = this.refs.opt1.value;
} else {
this.setState({ product: this.state.product.filter(function(_, i) { return i }) });
};
if (this.refs.opt2.checked) {
var opt1 = this.refs.opt2.value;
} else {
this.setState({ product: this.state.product.filter(function(_, i) { return i }) });
};
var array = this.state.product.concat([opt1]);
this.setState({
product: array
});
},
render: function(){
return(
<div><input ref="opt1" type="checkbox" value="foo" onClick={this._product}/></div>
)
}
...
В чем смысл этой функции фильтра? удалить первый элемент? Кроме того, зачем использовать значение вместо отмеченного флажка? – OriolBG
@OriolBG это странный способ написания 'arr.slice (1)'. Также OP вы вызываете 'setState' в конце вашей функции, поэтому предыдущие вызовы' setState' перезаписываются, не говоря уже о том, что если ни одна из опций не отмечена, 'opt1' будет не определена – azium
' this.setState ({product: this.state.product.filter (function (i) {return i! == null})}); '' null 'все еще существует – Sylar