Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import { StaticQuery, graphql, Link } from 'gatsby';
  3.  
  4. interface Tag {
  5. tag: string;
  6. totalCount: number;
  7. }
  8.  
  9. interface AllMarkdownRemark {
  10. group: Tag[];
  11. }
  12.  
  13. interface QueryData {
  14. allMarkdownRemark: AllMarkdownRemark;
  15. }
  16. export default class TagCloud extends Component {
  17. render() {
  18. return (
  19. <div>
  20. <StaticQuery
  21. query={TAG_LIST}
  22. render={({ allMarkdownRemark }: QueryData) => {
  23. const tags: Tag[] = allMarkdownRemark.group.sort(function(a, b) {
  24. return b.totalCount - a.totalCount;
  25. });
  26. return (
  27. <ul>
  28. {tags.map(tag => {
  29. return (
  30. <Link key={tag.tag} to={`/tags/${tag.tag}`}>
  31. <li>{`#${tag.tag} (${tag.totalCount})`}</li>
  32. </Link>
  33. );
  34. })}
  35. </ul>
  36. );
  37. }}
  38. />
  39. </div>
  40. );
  41. }
  42. }
  43.  
  44. //graphQL
  45. const TAG_LIST = graphql`
  46. {
  47. allMarkdownRemark {
  48. group(field: frontmatter___tags) {
  49. tag: fieldValue
  50. totalCount
  51. }
  52. }
  53. }
  54. `;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement