Первый раз используя реакцию.Как получить rss элементы в компонент? - PullRequest
0 голосов
/ 26 сентября 2019

Я впервые использую реагирую.Я прихожу из JQuery, чтобы отреагировать, это похоже на большой прыжок.Если кто-нибудь может помочь мне изменить этот рефакторинг, чтобы я работал так, как я, Я всегда буду у вас в долгу!:)

Я пытаюсь разобрать ленту RSS, где я хочу получить заголовок самой последней публикации и ссылку для рендеринга в компонент.

https://www.npmjs.com/package/rss-parser - Используя эточтобы получить парсер.

При просмотре моего приложения в браузере асинхронная функция выплевывает RSS-поток в консоль, что, я думаю, является хорошим началом!

    // src/App/index.tsx
    import * as React from 'react';
    import * as Parser from 'rss-parser';
    // Types
    import { string } from 'prop-types';

    let parser = new Parser();

    // blueprint for the properties
    interface Props {
      name: string;
    }

    // Component state
    interface State {
        //feed: any[];
    }


    (async () => {

      let feed = await parser.parseURL('https://www.reddit.com/.rss');
      console.log(feed.title);

      feed.items.forEach((item: { title: string; link: string; }) => {
        console.log(item.title + ':' + item.link)
      });

    })();


    export default class App extends React.Component<Props, State> {
      render() {
        return (
          <div>
            <h1>RSS Feed</h1>
            <div>
              <h1>item.title</h1>
              <a href="">item.link</a>
            </div>
          </div>
        );
      }
    }

1 Ответ

3 голосов
/ 26 сентября 2019

Если я вас правильно понимаю, вам нужно что-то вроде этого:

export default class App extends React.Component<Props, State> {
    constructor(props: {}) {
         super(props);
         this.state = { feed: [] };
    }

    async componentDidMount() {
        const feed = await parser.parseURL('https://www.reddit.com/.rss');
        this.setState({ feed });
    }

    render() {
        return (
        <div>
            <h1>RSS Feed</h1>
            this.state.feed.map((item, i) => (
                <div key={i}>
                    <h1>item.title</h1>
                    <a href="">item.link</a>
                </div>
            ))
        </div>
        );
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...