2017-01-26 1 views
0

У меня есть этот код, который вставляет идентификаторы checkboks в массив, но если я их отключу, он не удаляет их, я использую update для add-addons-update любые предложениядобавить/удалить элементы массива с checkboks и reactjs

 constructor(props) { 
     super(props); 
     this.state={ 
      keyGen:[] 
     } 
     } 
     render(){ 
     <form> 
      {this.renderElements()} 
      <input type="submit" value="Save" /> 
     </form> 
     renderElement(){ 
     return this.props.Elements.map((item, index)=>{ 
render(
     <Input name='list' type='checkbox' onClick={()=>this.updateStateList(item.id)} label='Add' className='listTour' /> 
     ) 
     }) 
     } 

     updateStateList(value){ 
     this.setState(update(this.state, {keyGen: {$push:[value]}})) 
     console.log(this.state.keyGen) 
     } 

благодарит

+0

если вы снимите флажок, он не удаляет элементы из массива? –

+0

нет, только вставьте предметы –

+0

Я не понимаю ваш вопрос. Что вы подразумеваете под словом «если я их отключу»? –

ответ

1

// изменить функцию визуализации, как это.

Вы можете увидеть рабочий код здесь http://codepen.io/umgupta/pen/dNVoBg вкладки консоли См в нижнем

class UpdateStateDemo extends React.Component { 
     constructor(props) { 
     super(props); 
     this.state={keyGen:[]} 
     } 

     render(){ 
     console.log(this.state) 
     return (
     <form> 
      { 
       this.props.Elements.map((item, index)=>{ 
       return (
        <input 
        key={item} 
        name='list' 
        type='checkbox' 
        onClick={(e)=>this.updateStateList(e,item)} 
        label='Add' 
        className='listTour' /> 
       ) 
      }) 
      } 
      <input type="submit" value="Save" /> 
     </form> 
     ) 
     } 

    updateStateList(e, value){ 
    console.log(e.target.checked) 
    if (e.target.checked){ 
     //append to array 
     this.setState({ 
     keyGen: this.state.keyGen.concat([value]) 
     }) 
    } else { 
     //remove from array 
     this.setState({ 
     keyGen : this.state.keyGen.filter(function(val) {return val!==value}) 
     }) 
    } 
} 
} 
+0

Это работает, спасибо, но забавно, почему, когда я делаю первый выбор, он показывает мне пустой массив, который вы знаете, почему это может быть –

+0

Потому что у вас есть пустой массив в состоянии? –

+0

Но если пользователь отправляет только одни данные, тогда отправьте пустой массив, как его решить. –

Смежные вопросы