task.txt 4.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. ДЗ 1:
  2. 0) забрать код по ссылке выше; √
  3. используя store.subscribe и вашу функцию-подписчика:
  4. 1) забрать rootCats (store.getState().rootCats.payload.data.CategoryFind)
  5. при его наличии. Используйте ?. вместо . чтобы не получать ошибки Cannot read
  6. properties of undefined. √
  7. 2) проитерировать rootCats, создать для каждой категории ссылку (тэг a)
  8. с текстом-названием категории вида #/category/АЙДИШНИК КАТЕГОРИИ.
  9. Отобразите ссылке в блоке aside √
  10. 3) пока промис в статусе PENDING используйте какой-то прелоадер (анимированную
  11. картинку загрузки) вместо меню. Картинку нагуглите). Для симуляции тормозного
  12. интернета используйте Network -> Throttling в Developer Tools √
  13. gql:
  14. - сделать функцию getGQL, которая возвращает функцию, похожую на текущую gql,
  15. однако замыкает url (getGQL принимает url как параметр; gql же более не будет
  16. требовать этого параметра) √
  17. - сделать параметр по умолчанию для variables - пустой объект; √
  18. - сделать reject возвращаемого промиса, если с бэкэнда не вернулся JSON с data,
  19. зато в JSON есть errors. ошибка с бэка должна попасть error промиса; √
  20. - сделать так, что бы промис-результат gql был без лишних оберток типа
  21. data.CategoryFind, data.GoodFindOne и т.п. Пусть результат gql содержит только
  22. полезную информацию. Для этого из data извлеките значение первого ключа, как бы он
  23. не назывался; √
  24. - если в localStorage есть authToken - добавить заголовок Authorization
  25. со значением "Bearer ТОКЕН_ИЗ_ЛОКАЛСТОРЕЙДЖА" √
  26. -------------------------------------------------------------------------------------
  27. ДЗ 2:
  28. 1. доделать страницу категории:
  29. 1.1 сделать нормальные карточки товаров с ценой и картинкой. Для картинки используйте
  30. ссылку http://shop-roles.node.ed.asmer.org.ua/ + url картинки; √
  31. 1.2 вверху над товарами сделать вывод ссылок на подкатегории (по аналогии с aside
  32. слева)
  33. 2. Сделать страницу товара. Пусть там выводятся все картинки (можно сделать какой-то
  34. слайдер, переключающий картинки по клику) + описание. Добавьте ссылку на
  35. категорию(-и) в которых находится товар.
  36. 3. создать actionFullLogin, который thunk (возвращает функцию с параметром dispatch.
  37. Thunk должен вначале диспатчить actionLogin (который промис login), получать его
  38. результат (let result = await dispatch(actionLogin....., и если там не null, то
  39. диспатчить actionAuthLogin с полученным токеном;
  40. (http://doc.a-level.com.ua/javascript-redux-thunk#h3-8)
  41. 4. создать actionFullRegister, который так же thunk:
  42. 4.1 диспатчит actionRegister (аналог actionLogin, создает юзера на бэке)
  43. 4.2 в случае успеха диспатчит actionFullLogin, для автоматического логина после
  44. реги. (http://doc.a-level.com.ua/javascript-redux-thunk#h3-9)
  45. 5. добавить в window.onhashchange роуты #/login и #/register, которые используют
  46. ваши конструкторы LoginForm для отрисовки формы. По событию формы логина onlogin
  47. делайте store.dispatch(actionFullLogin(.....)) и
  48. store.dispatch(actionFullRegister(.....)) соответственно;
  49. 6. добавьте где-то вверху страницы имя пользователя когда пользователь залогинен.