React-Eingabe DefaultValue wird nicht mit Status aktualisiert

Ich versuche Sie ein einfaches Formular erstellen mit reagieren, aber, die Schwierigkeiten haben, die Daten ordnungsgemäß binden Sie die defaultValue-der form.

Das Verhalten, das ich Suche, ist dies:

  1. Wenn ich öffne meine Seite, die Text-input-Feld sollte ausgefüllt werden mit dem text meine AwayMessage in meiner Datenbank. Das ist "Sample Text"
  2. Im Idealfall möchte ich einen Platzhalter in den Text-Eingabe-Feld, wenn die AwayMessage in meiner Datenbank hat keinen text.

Aber jetzt, ich finde, dass der Text-input-Feld leer ist, jedes mal wenn ich die Seite aktualisieren. (Obwohl, was ich in die Eingabe nicht korrekt gespeichert und bleiben bestehen.) Ich denke, das ist, weil das input-text-Feld in das html geladen wird, wenn die AwayMessage wird ein leeres Objekt, aber nicht aktualisieren, wenn der awayMessage Lasten. Auch bin ich mir nicht geben Sie einen Standardwert für das Feld.

Habe ich entfernt, einige der code, der für Klarheit (d.h. onToggleChange)

    window.Pages ||= {}

    Pages.AwayMessages = React.createClass

      getInitialState: ->
        App.API.fetchAwayMessage (data) =>
        @setState awayMessage:data.away_message
        {awayMessage: {}}

      onTextChange: (event) ->
        console.log "VALUE", event.target.value

      onSubmit: (e) ->
        window.a = @
        e.preventDefault()
        awayMessage = {}
        awayMessage["master_toggle"]=@refs["master_toggle"].getDOMNode().checked
        console.log "value of text", @refs["text"].getDOMNode().value
        awayMessage["text"]=@refs["text"].getDOMNode().value
        @awayMessage(awayMessage)

      awayMessage: (awayMessage)->
        console.log "I'm saving", awayMessage
        App.API.saveAwayMessage awayMessage, (data) =>
          if data.status == 'ok'
            App.modal.closeModal()
            notificationActions.notify("Away Message saved.")
            @setState awayMessage:awayMessage

      render: ->
        console.log "AWAY_MESSAGE", this.state.awayMessage
        awayMessageText = if this.state.awayMessage then this.state.awayMessage.text else "Placeholder Text"
        `<div className="away-messages">
           <div className="header">
             <h4>Away Messages</h4>
           </div>
           <div className="content">
             <div className="input-group">
               <label for="master_toggle">On?</label>
               <input ref="master_toggle" type="checkbox" onChange={this.onToggleChange} defaultChecked={this.state.awayMessage.master_toggle} />
             </div>
             <div className="input-group">
               <label for="text">Text</label>
               <input ref="text" onChange={this.onTextChange} defaultValue={awayMessageText} />
             </div>
           </div>
           <div className="footer">
             <button className="button2" onClick={this.close}>Close</button>
             <button className="button1" onClick={this.onSubmit}>Save</button>
           </div>
         </div>

meiner Konsole.Protokoll für die AwayMessage zeigt Folgendes:

AWAY_MESSAGE Object {}
AWAY_MESSAGE Object {id: 1, company_id: 1, text: "Sample Text", master_toggle: false}

InformationsquelleAutor der Frage Neeharika Bhartiya | 2015-05-09

Schreibe einen Kommentar