2016-08-15 2 views
4

Я пытаюсь установить свойство defaultValue для текстового поля, получив значение из моего состояния Redux, но он не обновляется соответствующим образом.Странное поведение с текстовым полем Material-UI и статусом Redux, пытающимся установить значение по умолчанию?

Я передал значение в качестве опоры из компонента контейнера до моего редактирования компоненты, как так:

render() { 

const {data} = this.props 

    return (
      <editcomponent value={this.props.data.value} 
    ) 
} 

const mapStateToProps = (state) => { 

    return { 
    data: state.dataReducer 
    } 

} 

В моем редактировании компоненты я попытался просто показать его первым, и это работает отлично:

render() { 

    return (
      <h3>this.props.value</h3> 
    ) 
} 

Когда я перезагружаю страницу новыми данными в моем состоянии Redux, она обновляется соответствующим образом. Однако, когда я пытаюсь сделать то же самое, кроме текстового поля, в котором я устанавливаю defaultValue, он не обновляется.

Это не работает:

render() { 

    return (
      <TextField id="textfield_id" defaultValue={this.props.value}/> 
    ) 
} 

Он будет работать в начальный момент времени, а затем, когда я перезагрузить страницу с новыми данными он не устанавливает DefaultValue к новым данным она остается такой же, как это изначально было. Если я использую значение вместо этого, это изменит данные, но это не позволит мне больше редактировать значение текстового поля.

Как я могу это решить? Я хочу иметь значение defaultValue, установленное в моем состоянии Redux, и разрешить изменение значения, поскольку пользователь меняет/удаляет то, что находится в текстовом поле.

ответ

0

Я тоже столкнулся с этой ошибкой, решаясь, сначала сопоставляя реквизиты с состоянием, а затем используя это состояние вместо значения prop.

function updateValue(e) { 
    this.setState({ value: e.target.value }); 
} 

render { 
    return (
    <TextField id="textfield_id" value={this.state.value} onChange={this.updateValue}/> 
); 
}