Задать вопрос
victorzadorozhnyy
@victorzadorozhnyy

Как правильно рендерить элемент у которого state: this.props.state?

Столкнулся с проблемой, что если вызывать элемент и назначать в нем в конструкторе state : this.props.state, то все работает первый раз, а потом значения меняются, а для пользователя отображаются прежние.
class UserData extends Component {
    constructor(...args) {
        super(...args);
        this.state = {
            id : this.props.id,
...

//value не меняется для пользователя при следующем вызове
<Input value={this.state.id} onChange={(event)=> this.setState({ id: event.target.value })} type="text"/>

//Это реализация (если нужна), но мне кажется, что проблема в коде выше
//кнопка которая рендерит элемент
<UserRow setUserData={()=>that.setUserData( user.id )} row_id={user.id } />
//функция
setUserData(id ){ this.setState({ user_data: <UserData id={id} /> });}
  • Вопрос задан
  • 345 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Вам нужно слушать componentWillReceiveProps:

componentWillReceiveProps(nextProps) {
  this.setState({ id: nextProps.id })
}


Плюс почитайте как не нужно использовать state: https://facebook.github.io/react/tips/props-in-get...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@WapGeaR
Программист
Задавайте изначальный state в ComponentWIllMount, либо сделайте проверку
if(!this.state.id) this.setState({id: this.props.id})
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы