2017-03-10 8 views
0

Ich bekomme diese Warnung, wenn ich den untenstehenden Code ausführen. Wie kann ich den Fehler entfernen?React JS Warnung

Vielen Dank.

Warnung: Fehler Form PropType: Sie bot eine value prop zu einem Formularfeld ohne onChange Handler. Dies wird ein schreibgeschütztes Feld rendern. Wenn das Feld änderbar sein soll, verwenden Sie defaultValue. Andernfalls setzen Sie entweder onChange oder readOnly. Überprüfen Sie die Rendermethode test.

var test = React.createClass({ 

getInitialState : function(){ 
    return { 
     number : 10, 
     checked: [], 
     selected : [] 
    }; 
}, 

componentWillMount : function(){ 

}, 

moreAilment : function(){ 
    var temp = this.state.number + 5; 
    this.setState({number:temp}); 
}, 

handleChangechk: function (e){ 
    const target = e.target; 
    const value = target.type === 'checkbox' ? target.checked : target.value; 
    const name = target.name; 
    var checkedCopy = this.state.checked.slice(); 
    var selectedCopy = this.state.selected.slice(); 

    if(value===true) { 
      checkedCopy[name] = true; 
      selectedCopy [name] = name; } 
    else { 
      checkedCopy[name] = false; 
      selectedCopy [name] = ''; } 

    this.setState({ 
       checked: checkedCopy, 
       selected: selectedCopy }); 
}, 


render : function() { 

    var ailmentsList = []; 
    var selectedList= []; 

    for (var i = 0; i < this.state.number; i++) { 

     ailmentsList.push(<span ><input type="checkbox" checked={!!this.state.checked[i]} onChange={(e)=> {this.handleChangechk(e)}} /><span ></span><label> Asthma {i}</label></span>); 
     if(this.state.selected[i]) 
      { 
       selectedList.push(this.state.selected[i]); 
      } 
    }; 

    return(
      <div className> 
       {selectedList} 
      </div> 
     ); 

    } 
}); 
+0

Haben Sie das getan, was der Fehler schlägt? – evolutionxbox

+0

Ja. Ich bekomme immer noch die gleiche Warnung. –

+0

können Sie bitte Geige erstellen? – Danish

Antwort

0

Könnten Sie versuchen, diese

<div> 
    <input type='checkbox' defaultChecked /> 
</div> 

Grundsätzlich Sie defaultChecked Attribut auf Ihre Checkbox hinzufügen müssen, oder ich bin nicht sicher, ob es funktionieren wird, aber können versuchen, können Sie dies tun Onchange Weg

onChange={this.handleChangechk} 

statt onChange={(e)=> {this.handleChangechk(e)}}

EDIT

: Erstellt Einfaches Beispiel der Arbeits Fiddle mit Kästchen zum Ankreuzen und Button Zustand der Checkbox Makeln http://jsfiddle.net/yeoman/payugwju/1/

+0

Ich versuchte dies auch, ich bekomme immer noch die gleiche Warnung. –

+0

können Sie versuchen, diese 'defaultChecked = {this.props.checked}' – Danish

+0

Funktioniert immer noch nicht und wirft die gleiche Warnung, Dänisch. :( –