Я пытаюсь создать простую форму с реакцией, но сталкиваюсь с трудностями, когда данные правильно привязываются к умолчанию по умолчанию формы.
Поведение, которое я ищу, следующее:
- Когда я открываю свою страницу, поле ввода текста должно быть заполнено текстом моего AwayMessage в моей базе данных. Это "Пример текста"
- В идеале я хочу иметь местозаполнитель в поле ввода текста, если AwayMessage в моей базе данных не имеет текста.
Однако, прямо сейчас, я обнаружил, что поле ввода текста пустое при каждом обновлении страницы. (Хотя то, что я набираю на ввод, сохраняет корректно и сохраняется.) Я думаю, это связано с тем, что поле ввода html загружается, когда AwayMessage является пустым объектом, но не обновляется, когда загружается файл awayMessage. Кроме того, я не могу указать значение по умолчанию для поля.
Я удалил часть кода для ясности (т.е. 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"][email protected]["master_toggle"].getDOMNode().checked
console.log "value of text", @refs["text"].getDOMNode().value
awayMessage["text"][email protected]["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>
my console.log для AwayMessage показывает следующее:
AWAY_MESSAGE Object {}
AWAY_MESSAGE Object {id: 1, company_id: 1, text: "Sample Text", master_toggle: false}