@KELeborn

Redux — как хранить данные в input при рендере?

Есть форма в приложении
Она служит для добавления и редактирования
Когда приходит от dispatch данные об редактировании, то поля должны заполняться данными
Какие проблемы:
Поля заполняются но не изменяются (value='.{..}')
Поля заполняются то когда редактируешь и рендерит но новому после dispatch то данные сбиваются назад (через componentDidUpdate)
Поля заполняются и меняются и хранят редактированные данные, НО со сдвигом на 1 предыдущее значение (через componentDidUpdate + храню через onChange в this.feilds={...})
defaultValue - не помагает, так как форма динамическая

constructor(props) {
		super(props);
		this.fields = {}
	}
onChangeName(e) {
		this.fields.tableName_input = e.target.value
	}
	onChangeParticipants(e) {
		this.fields.tableParticipants_select = e.target.value
	}
	componentDidUpdate(params){
		if (params.editing){
			console.log(params)
			let tableName_input = this.fields.tableName_input && this.fields.tableName_input || params.table.name
			ReactDOM.findDOMNode(this.refs.tableName_input).value = tableName_input
			let tableParticipants_select = this.fields.tableParticipants_select && this.fields.tableParticipants_select || params.table.participants
			ReactDOM.findDOMNode(this.refs.tableParticipants_select).value = tableParticipants_select
		}
	}
  • Вопрос задан
  • 1231 просмотр
Пригласить эксперта
Ответы на вопрос 1
Amazing-Space-Invader
@Amazing-Space-Invader
веб-хипстер
import React, { Component, PropTypes } from 'react'

class Main extends Component {
    constructor(props, context) {
        super(props, context);
        this.state = {
            inputValue: this.props.inputValue || ''
        };
    }

    handleNameChange(e) {
        this.setState({ inputValue: e.target.value });
    }

    render() {
        return (
            <div>
                <input type='text' onChange={ ::this.handleInputChange } />
                <div>input value: { this.state.inputValue }</div>
            </div>
        )
    }
}

export default Main
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
25 апр. 2024, в 11:49
25000 руб./за проект
25 апр. 2024, в 11:37
40000 руб./за проект