Взаимодействуем с VK
ОБНОВЛЕНИЕ 2018: Вышло второе издание (современный код и версии пакетов, данное издание УСТАРЕЛО)
На канале так же проводятся бесплатные вебинары, публикуются переводы и авторские материалы, присоединяйтесь!
Взаимодействуем с VK
Чтобы работать с VK API вам необходимо будет создать приложение на сайте vk.com, и указать в настройках 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
Итого: Вы научились выполнять асинхронные запросы и корректно показывать прелоадер, ошибки или успешный результат.
Исходный код на текущий момент.
P.S. css тоже был слегка подправлен.
Last updated
Was this helpful?