Взаимодействуем с VK

ОБНОВЛЕНИЕ 2018: Вышло второе изданиеarrow-up-right (современный код и версии пакетов, данное издание УСТАРЕЛО)

На каналеarrow-up-right так же проводятся бесплатные вебинары, публикуются переводы и авторские материалы, присоединяйтесьarrow-up-right!

Взаимодействуем с VK

Чтобы работать с VK APIarrow-up-right вам необходимо будет создать приложение на сайте vk.comarrow-up-right, и указать в настройках URL сервера, с которого вы будете выполнять запросы.

Localhost не поддерживается.

Интеграция VK API

Необходимо добавить скрипт openapi перед нашей сборкой - bundle.js, а так же вызвать VK.init

<!DOCTYPE html>
<html>
  <head>
    <title>Redux [RU]Tutorial</title>
  </head>
  <body>
    <div id="root" class="container-fluid">
    </div>
    <script src="//vk.com/js/api/openapi.js"></script>
    <script src="/static/bundle.js"></script>
    <script language="javascript">
      VK.init({
        apiId: 5087365
      });
    </script>
  </body>
</html>

Авторизация

Создадим действия для User.

src/actions/UserActions.js

Проверьте список констант:

"Приконнектим" в <App /> UserActions, и добавим новые свойства в компонент <User />

src/containers/App.js

Обновим reducer user:

src/reducers/user.js

И покажем все это в компоненте <User />

src/components/User.js

Сейчас если кликнуть на "войти" - всплывет VK окно с подтверждением прав доступа (первый раз). После подтверждения прав, вместо кнопки войти появляется надпись "Привет, ХХХ". При перезагрузке сайта и повторных нажатиях на "войти" - VK окно мгновенно закрывается, а кнопка вновь изменяется на "Привет, XXX". Неплохо бы было проверять "статус", например в componentWillMount, но оставлю это на "домашку".

Как всегда, доблестный логгер пишет в консоли - что происходит.

Загрузка фото

Нам нужно практически повторить, все что написано выше, только для блока Page.

Можете попробовать сами, используя метод photos.getAll из VK API.

Для начала, проверим список констант:

src/constants/Page.js

Напишем немало кода, для загрузки фото:

src/actions/PageActions.js

makeYearPhotos и getMorePhotos можно вынести в папку utils, как вспомогательные функции.

Главное здесь, что мы по прежнему вызываем действия (dispatch actions). Все так, как было в самом начале, просто добавилось немного больше логики для получения фото. Алгоритм получения всех фото (да и необходимость получения всех) - оставляю без комментариев. Мне кажется, это приемлемый способ.

Чтобы потестировать показ ошибок, достаточно просто исправить цифру 200 на 2 или 20. VK с любовью вам ответит, что вы мягко-говоря, очень настойчиво обращаетись к API ;)

Исправив редьюсер и отрисовку в компоненте, мы закончим начатое.

src/reducers/page.js

src/components/Page.js

Итого: Вы научились выполнять асинхронные запросы и корректно показывать прелоадер, ошибки или успешный результат.

Исходный кодarrow-up-right на текущий момент.

P.S. css тоже был слегка подправлен.

Last updated

Was this helpful?