2017-01-17 12 views
1

В моем приложении React я хочу отобразить значение prop, но оно не существует до тех пор, пока реквизит не будет обновлен, что произойдет после завершения рендеринга.Реакция: попытка рендеринга реквизита, который заполняется ПОСЛЕ рендеринга

this.props.users является объектом, поэтому я использую Object.keys() перевести в массив, а затем карту через дочерние элементы с помощью клавиш, чтобы нацелить их:

// ... 
render() { 
    return { 
    <div className='users-list'> 
     <h4>Users List</h4> 
     {!isLoaded(users) ? '' : 
      Object.keys(users).map((key, i) => <p>{users[key].email}</p>) 
     } 
    </div> 
    } 
} 

Это работает, но это заняло у меня много взломать и адаптировать код, чтобы попасть туда. Есть ли лучший/более красноречивый способ сделать это? Потому что я думаю, что это действительно обычный случай! Входит ли в него жизненный цикл компонента?

Любая помощь/предложения оценены.

+1

Вы делаете это правильно. –

+1

Я действительно не вижу в этом ничего плохого. Код легко читается. Я могу сказать, что вы только хотите отображать пользователей после их загрузки, и из кода я могу сказать, что пользователи также не обязательно появятся в первом рендере. Это довольно обычная вещь, которую нужно сделать в реакционной кодовой базе –

+0

Хорошо. Хорошо, что это хорошо знать :) Мне хотелось определить список заранее, а затем сделать это может быть лучше. Но я попробовал это, и он, очевидно, затем пытается присвоить значение 'users' переменной перед рендером, которая в этот момент равна« null ». Просто хотел убедиться, что это была не плохая практика. Благодарю. – Paulos3000

ответ

0

Дайте по умолчанию?

const users = this.props.users || {}; 

Использование ES6 и деструктурирующие:

const { users = {} } = this.props;