Я надеюсь смонтировать класс компонента внутри итерации карты массива.Поскольку массив прошел два преобразования, у меня есть две функции для обработки этого преобразования, но последние компоненты не монтируются.
Статьи представлены в виде блога днем.С GraphQL я получаю список всех дней публикации статьи {listDates ()}.Затем мне нужно получить только уникальные даты и убедиться, что они в обратном порядке {sortDates ()}.С этим массивом мне нужно вставить отдельные даты в их собственный компонент, где выполняется другой запрос, чтобы отобразить все статьи за этот день.
import React, { Component } from "react";
import { withStyles } from "@material-ui/core/styles";
import { gql } from "apollo-boost";
import { graphql } from "react-apollo";
import PostsDay from "./postsDay";
var dateFormat = require("dateformat");
var array = require("lodash/array");
var collection = require("lodash/collection");
const getDatesQuery = gql`
{
posts(where: { status: "published" }) {
published
}
}
`;
class PostsFeed extends Component {
sortDates = allDates => {
let uniqueSortedDates = array.reverse(
array.uniq(collection.sortBy(allDates))
);
uniqueSortedDates.map((d, index) => {
console.log("should be posting", d);
return <PostsDay key={index} artDate={d} />;
});
};
listDates = (data, allDates, sortDates) => {
data.posts.forEach(post => {
allDates.push(dateFormat(post.published, "yyyy-mm-dd"));
});
sortDates(allDates);
};
render() {
let data = this.props.data;
let allDates = [];
if (data.loading) {
return "Loading...";
} else {
return <div>{this.listDates(data, allDates, this.sortDates)} .
</div>;
}
}
}
export default graphql(getDatesQuery)(
withStyles(styles, { withTheme: true })(PostsFeed)
);
Я ожидаю загрузки всех своих компонентов.Консоль читает следующее:
should be posting 2017-11-14
should be posting 2017-11-13
should be posting 2017-11-11
should be posting 2017-11-04
...
, поэтому мы попадаем в функцию {sortDates ()}, но не визуализируем компонент.Что я не понимаюПожалуйста помоги.Спасибо всем.