Я создаю приложение с React и Reflux, и я пытаюсь отобразить список элементов в определенном порядке.React: Оказание списка в обратном порядке
Элементы являются настраиваемыми компонентами Почты, которые отображаются в обратном хронологическом порядке, поэтому новая запись находится в верхней части списка.
Я использую Академию Хана TimeoutTransitionGroup, чтобы элементы списка затухали.
Проблема, которую я вижу, заключается в том, что когда я добавляю новое сообщение, и компонент получает обновленный список через новые реквизиты, переход происходит в элементе последнего в списке, а не в первом. Я хотел бы иметь его так, чтобы первый элемент затухал, так как это позиция нового элемента, который был добавлен.
Сообщение 2 < - Этот пост был недавно добавлен
Сообщение 1 < - Это сообщение исчезает в
Есть ли способ задать тот же порядок вещей, но сделать их в обратном порядке или что-то подобное?
Это делают функции моего компонента:
if (!(this.props.posts && this.props.ordering)) return false;
var posts = this.props.ordering.map(function(postId, index) {
return <Post key={index} post={this.props.posts[postId]}/>;
}, this);
return (
<div className="post-collection">
<TimeoutTransitionGroup
enterTimeout={500}
leaveTimeout={500}
transitionName="postTransition">
{posts}
</TimeoutTransitionGroup>
</div>
);
Это CSS переход:
.postTransition-enter {
opacity: 0;
transition: opacity .25s ease-in;
}
.postTransition-enter.postTransition-enter-active {
opacity: 1;
}
.postTransition-leave {
opacity: 1;
transition: opacity .25s ease-in;
}
.postTransition-leave.postTransition-leave-active {
opacity: 0;
}
Любая помощь будет высоко ценится!
Смена ключа работала отлично. Теперь это так очевидно, что вы указали на это. Благодаря! – hedgeday
Это одна из самых сложных частей для начала работы с ReactCSSTransitionGroup, потому что React обычно только жалуется на атрибут 'key', когда его просто нет в элементах/компонентах, которые вы генерируете в цикле ... так как это не жалуются на случаи, когда предметы переизлучаются, но их «ключи» остаются неизменными, это намного сложнее выяснить, что происходит. Отличный ответ! –
проклятье! это действительно решило мою проблему. Спасибо за отзыв о том, что вы не используете индекс в качестве компонента 'key' –