Более простое решение с использованием reverse
состояло бы в том, чтобы просто развернуть массив при его отображении и создать дочерние элементы.
render() {
const { items } = this.state;
return (<div>
{items.clone().reverse().map((item, index) => <div key={item}>
{ /* Stuff */ }
</div>)}
</div>);
}
Да, он будет создавать новый массив при каждом вызове render
, но опора key
идентифицирует элемент и предотвращает ненужные повторные рендеринг дочерних элементов, потому что, хотя это новый массив, ссылки на объекты будут все так же. Но я бы рекомендовал использовать для идентификатора key
более идентифицируемое и уникальное значение, например, Идентификаторы или слизни.
Также таким образом вам не придется пересчитывать массив, используя reverse
везде, где вы его используете, только в одной точке вашего кода.