ReactJS

Форк
0
/
usePostsData.ts 
46 строк · 1.2 Кб
1
import React from "react";
2
import {tokenContext} from "../shared/context/tokenContext";
3
import axios from "axios";
4

5
export interface IPostData {
6
  subreddit: string;
7
  title: string;
8
  thumbnail: string;
9
  author: string;
10
  score: number;
11
  created: Date;
12
  id: string;
13
}
14

15
export function usePostsData() {
16
  const [postData, setPostData] = React.useState<IPostData[]>([]);
17
  const token = React.useContext(tokenContext);
18
  React.useEffect(() => {
19
    if(token == 'undefined'){
20
      return;
21
    }
22
    axios.get(
23
      "https://oauth.reddit.com/best.json?sr_detail=true",
24
      {headers: {Authorization: `Bearer ${token}`}}
25
    ).then((resp) => {
26
        let result: Array<IPostData> = [];
27
        resp.data.data.children.forEach((children: {data: any})=>{
28
          let newObj: IPostData = {
29
            author: children.data.author,
30
            subreddit: children.data.subreddit,
31
            title: children.data.title,
32
            thumbnail: children.data.thumbnail,
33
            score: children.data.score,
34
            created: new Date(children.data.created*1000),
35
            id: children.data.id
36
          };
37

38
          result.push(newObj)
39
        })
40
        setPostData(result);
41
    })
42
      .catch(console.error)
43
  },[token]);
44

45
  return [postData];
46
}
47

48

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.