import React from "react" import { Main } from '../ui/ui' import { Grid, Row, Col } from 'react-flexbox-grid' import { graphql } from 'gatsby' import { useLocation } from '@reach/router' import * as queryString from 'query-string' import useCategoriesQuery from '../hooks/useCategoriesQuery' import SEO from '../components/SEO/SEO' import Layout from '../components/Layout/Layout' import Articles from '../components/Articles/Articles' import Categories from '../components/Articles/Categories/Categories' import CategoryItem from '../components/Articles/Categories/CategoryItem' import Search from '../components/Articles/Search/Search' import Offers from '../components/Offers/Offers' import Newsletter from '../components/Newsletter/Newsletter' import SearchIcon from '../images/search-icon.svg' const ArticlesPage = ({ data: { allMarkdownRemark: edges }, }) => { const { categories } = useCategoriesQuery() const { search, pathname } = useLocation() const [filtredArticles, setFiltredArticles] = React.useState([]) const [query, setQuery] = React.useState(queryString.parse(search).search || '') const allArticles = edges const filterArticles = React.useCallback(arr => { return arr.filter(({ node: { frontmatter } }) => frontmatter.title.toLowerCase().includes(query.toLowerCase()) || frontmatter.description.toLowerCase().includes(query.toLowerCase()) || frontmatter.category.toLowerCase().includes(query.toLowerCase()) || frontmatter.tags.join('').toLowerCase().includes(query.toLowerCase()) ) }, [query]) React.useEffect(() => { if (query !== '') { setFiltredArticles(filterArticles(allArticles.edges)) } }, [setFiltredArticles, filterArticles, allArticles.edges, query]) return (

Статьи

{categories.map(({ node }, i) => )}
{query ? filtredArticles.length === 0 ?

  Ничего не найдено

: null : null}
{query && query !== '' ? filtredArticles.length > 0 ? : null : }
) } export const query = graphql` { allMarkdownRemark(filter: {frontmatter: {templateKey: {eq: "article"}}}) { edges { node { frontmatter { slug title image { childImageSharp { fluid { ...GatsbyImageSharpFluid } } } category tags description } } } } } ` export default ArticlesPage