Redux: Обновления FAQ

Созданный на 31 мая 2016  ·  51Комментарии  ·  Источник: reduxjs/redux

Резюме

Я выполнил начальную черновую работу по написанию FAQ. @gaearon немного отредактировал, я добавил оглавление и короткие ссылки на вопросы, и до сих пор это был отличный ресурс. С тех пор я знаю, что @gaearon указала на ряд обсуждений и статей как на достойные FAQ, и у меня есть куча незавершенных закладок и обновлений, которые мне нужно разобрать. Давайте попробуем перечислить любые темы, ссылки или элементы, которые, по нашему мнению, необходимо добавить или обновить.

Обновлять

Я добавил обновления к существующим вопросам, но в настоящее время сосредоточен на других задачах. Если кто-то заинтересован в помощи в написании «новых» записей, я был бы рад поработать с ними над информацией, содержанием и редактированием!

В ожидании добавления

Новые темы

Общий

  • Когда я должен изучать Redux?

    • https://twitter.com/dan_abramov/status/739961787295117312

    • https://twitter.com/dan_abramov/status/739962098030137344

    • https://github.com/markerikson/react-redux-links/blob/master/basic-concepts.md

  • Какие плюсы и минусы использования Redux?

    • https://github.com/reactjs/redux/issues/1342#issuecomment-183401969

  • Чем Redux отличается от [Backbone, Angular, MobX]?

    • Redux против глобальной переменной

    • https://news.ycombinator.com/item?id=13334978

Структура кода

  • Многоразовая / инкапсулированная логика / модули?

    • https://github.com/markerikson/redux-ecosystem-links/blob/master/component-state.md

    • https://github.com/markerikson/react-redux-links/blob/master/redux-techniques.md#encapsulation-and-reusability

    • http://randycoulman.com/blog/

    • https://github.com/slorber/scalable-frontend-with-elm-or-redux

    • http://www.webpackbin.com/VkHniHP6b

  • Где должны находиться веб-сокеты и другие постоянные соединения?

    • В промежуточном программном обеспечении. См. Существующие примеры на https://github.com/markerikson/redux-ecosystem-links/blob/master/middleware-sockets-adapters.md

Представление

  • Пагинация / кеширование?

    • http://stackoverflow.com/questions/33940015/how-to-choose-the-redux-state-shape-for-an-app-with-list-detail-views-and-pagina

    • https://github.com/facebook/relay/issues/720#issuecomment-174050321

    • https://twitter.com/acemarke/status/804071531844423683

    • https://medium.com/@dcousineau/advanced-redux-entity-normalization-f5f1fe2aefc5

    • Относится к существующему вопросу о размере дерева состояний

Проектные решения

  • Почему Redux разделяет действия и обновления? Почему бы просто не обновить состояние напрямую?

    • https://stackoverflow.com/questions/43640464/why-we-decouple-actions-and-reducers-in-flux-redux-architecture

    • https://medium.com/@mark.erikson/ill-repeat-a-comment-i-ve-made-several-times-now-b4ead0b57a95

    • https://news.ycombinator.com/item?id=14550588

React-Redux

  • Зачем использовать React-Redux?

    • https://www.reddit.com/r/javascript/comments/6hperk/i_use_react_and_redux_but_ Never_reactredux_what/dj0fywb/

Другой

  • Где-нибудь поместите эти диаграммы? https://github.com/reactjs/redux/issues/653
  • "Достойные FAQ" упоминает:

    • https://github.com/reactjs/redux/issues/1751

    • https://github.com/reactjs/redux/issues/1628

    • https://github.com/reactjs/redux/issues/1676

    • https://twitter.com/dan_abramov/status/732543424356864001

  • Шаблон / многословие:

    • https://twitter.com/dan_abramov/status/813860965477392385

Обновления существующих вопросов

  • Когда мне следует использовать Redux?

    • https://dev.to/dan_abramov/comment/1n2k

  • Куда девать «бизнес-логику»?

    • https://twitter.com/FwardPhoenix/status/952971237004926977

    • https://github.com/reactjs/redux/issues/2796

Это не пункт часто задаваемых вопросов, но я оставлю здесь заметку, а не буду заполнять новую проблему. На странице "Beyond combReducers" должно быть упоминание о "состоянии двойного вложения", как в state.posts.posts , обычно из-за начального состояния, определяющего ключ _и_ редуктору среза присваивается ключ. . Определенно распространенная ошибка.

Завершенный

Новые темы

Неизменность

  • Обязательно ли использовать Immutable.js?

    • https://www.reddit.com/r/javascript/comments/4rcqpx/dan_abramov_redux_is_not_an_architecture_or/d51g4k4?context=3

    • https://github.com/markerikson/react-redux-links/blob/master/immutable-data.md#immutability-and-react

    • https://github.com/markerikson/react-redux-links/blob/master/react-performance.md#immutable-data

  • Почему данные должны обрабатываться неизменно?

    • http://stackoverflow.com/questions/37531909/redux-why-is-avoiding-mutations-such-a-fundamental-part-of-using-it

    • http://stackoverflow.com/questions/35970515/how-is-state-immutability-actually-used-in-redux

Обновления существующих вопросов

  • Когда / зачем использовать Redux?

    • https://twitter.com/dan_abramov/status/733742952657342464

    • https://twitter.com/dan_abramov/status/732912085840089088

    • https://twitter.com/dan_abramov/status/725089243836588032

    • https://twitter.com/dan_abramov/status/737036433215610880

    • http://stackoverflow.com/questions/36631761/when-should-i-add-redux-to-a-react-app

    • https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367#.8qxj336yv

    • http://stackoverflow.com/questions/39260769/redux-vs-plain-react/39261546#39261546

    • https://twitter.com/dan_abramov/status/802564042648944642

    • https://www.reddit.com/r/reactjs/comments/5exfea/feedback_on_my_first_redux_app/dagglqp/

    • http://stackoverflow.com/questions/39260769/redux-vs-plain-react/39261546#39261546

    • https://twitter.com/acemarke/status/793862722253447168

    • https://twitter.com/dan_abramov/status/801489026687651840

  • Состояние Redux и состояние React:

    • https://discuss.reactjs.org/t/redux-and-global-state-vs-local-state/4187/8

    • http://stackoverflow.com/questions/35328056/react-redux-should-all-component-states-be-kept-in-redux-store/35328862#35328862

    • https://www.reddit.com/r/reactjs/comments/4w04to/when_using_redux_should_all_asynchronous_actions/d63u4o8

    • https://twitter.com/dan_abramov/status/749710501916139520

    • https://twitter.com/dan_abramov/status/736310245945933824

  • Сериализуемые данные магазина:

    • https://github.com/reactjs/redux/issues/1793

  • Вложенные данные:

    • Пример Treeview: https://github.com/reactjs/redux/pull/1269

    • http://stackoverflow.com/questions/32798193/how-to-handle-tree-shaped-entities-in-redux-reducers

    • https://github.com/reactjs/redux/issues/1824

    • http://stackoverflow.com/questions/38012852/users-sees-one-part-of-deeply-nested-state-should-visible-properties-be-at-top/38017227#38017227

    • https://medium.com/@adamrackis/querying-a-redux-store-37db8c7f3b0f

  • Действия:

    • некоторые ссылки, упомянутые в https://github.com/reactjs/redux/issues/533?

    • Пакетные действия: https://github.com/manaflair/redux-batch

  • Файловая структура:

    • http://stackoverflow.com/questions/37111300/redux-why-not-put-actions-and-reducer-in-same-file/37116923

    • https://github.com/reactjs/redux/issues/1618

    • https://github.com/mxstbr/react-boilerplate/issues/27

    • https://github.com/reactjs/react-redux/issues/210#issuecomment-245113164

  • Масштабирование:

    • http://stackoverflow.com/questions/34782249/can-a-react-redux-app-really-scale-as-well-as-say-backbone-even-with-reselect

    • https://github.com/reactjs/react-redux/issues/407

    • https://github.com/reactjs/react-redux/pull/416

    • http://stackoverflow.com/questions/37264415/how-to-optimize-small-updates-to-props-of-nested-component-in-react-redux

    • http://somebody32.github.io/high-performance-redux/

    • https://github.com/reactjs/react-redux/issues/269

    • https://github.com/reactjs/redux/issues/1751

    • https://twitter.com/dan_abramov/status/720219615041859584

  • Множественные рендеры:

    • https://github.com/reactjs/redux/pull/1813

    • https://github.com/manaflair/redux-batch

  • Где живет бизнес-логика?

    • https://github.com/reactjs/redux/issues/384#issuecomment-127393209 (чем больше в редукторах, тем больше вы можете редактировать и воспроизводить через путешествие во времени)

    • http://blog.isquaredsoftware.com/2017/05/idiomatic-redux-tao-of-redux-part-2/#thick-and-thin-reducers

  • Множественные отправки

    • https://twitter.com/intelligibabble/status/800103510624727040

    • https://twitter.com/dan_abramov/status/800310164792414208

    • http://blog.isquaredsoftware.com/2017/01/idiomatic-redux-gotits-on-thunks-sagas-abstraction-and-reusability/#multiple-dispatching

  • Почему Redux не передает состояние подписчикам?

    • # 580 и многие другие

    • # 2214 (устранение разрывов)

    • В настоящее время частично дан ответ в разделе «Настройка магазина». Придется решить, куда это пойдет.

  • Почему Redux не использует классы для действий и редукторов?

    • https://github.com/reactjs/redux/issues/1171#issuecomment-196819727

  • Почему подпись промежуточного программного обеспечения использует каррирование?

    • 55, 534, 784, 922, 1744

  • Почему applyMiddleware использует закрытие для dispatch ?

    • https://github.com/reactjs/redux/pull/1592

    • https://github.com/reactjs/redux/issues/2097

  • combineReducers рекурсия / ограничения?

    • # 1768 и др.

  • Почему mapDispatch позволяет использовать возвращаемые значения getState или mapState ?

    • https://github.com/reactjs/react-redux/issues/237
  • Приведет ли "одно дерево состояний" к проблемам с памятью?

    • https://stackoverflow.com/questions/39943762/can-a-redux-store-lead-to-a-memory-leak/40549594#40549594
    • https://stackoverflow.com/questions/42489557/redux-and-all-the-application-state/42491766#42491766
    • https://stackoverflow.com/questions/44956071/memory-usage-concern-with-controlled-components?noredirect=1&lq=1
  • Зачем использовать создателей действий?

    • https://www.reddit.com/r/reactjs/comments/54k8js/redbox_redux_action_creation_made_simple/d8493z1?context=4

    • http://blog.isquaredsoftware.com/2016/10/idiomatic-redux-why-use-action-creators/

Самый полезный комментарий

Что касается логики разделения между создателями действий и редукторами , я думаю, стоит отметить, что селекторы (mapStateToComponent) - еще одно хорошее место для их обработки (проверка, преобразование данных). Это создает хорошее разделение между истинным источником от сервера (редуктор) и данными, связанными с представлением, которые вычисляются (преобразовываются или фильтруются) источником (селектором).

Другой вопрос, который я часто вижу, - как создать модуль redux (создатели действий, редукторы, компоненты), который можно было бы повторно использовать извне. В основном, как избежать конфликта имен действий, когда у нас есть несколько модулей с одинаковым типом на одной странице, и как определить имя редуктора, чтобы его можно было использовать в createStore.

Все 51 Комментарий

Также это кажется популярным и неочевидным.

https://twitter.com/dan_abramov/status/736310245945933824

Увидел это изображение, и я лишь частично слежу за тем, что там происходит. Вернее, я вижу код, я просто не совсем понимаю намерение или утверждение.

Предполагается ли, что вы визуализируете «связанный» компонент, за исключением того, что «диспетчеризация» и «сокращение» на самом деле просто обновляют состояние родительского компонента?

Я также не понимаю, что такое «отсоединение» редуктора, поскольку в этом фрагменте нет фактического хранения или использования store.replaceReducer() . Вы просто имеете в виду, что функция, подобная редуктору, может быть применима вне контекста структуры редуктора магазина?

Новый возможный раздел часто задаваемых вопросов или, возможно, проектный документ: «Почему Redux спроектирован таким, какой он есть». Примеры тем: почему store.subscribe() не включает действие или состояние в качестве аргумента, почему промежуточное ПО является вложенной функцией и т. Д.

Увидел это изображение, и я лишь частично слежу за тем, что там происходит. Вернее, я вижу код, я просто не совсем понимаю намерение или утверждение.

Предполагается ли, что вы визуализируете «связанный» компонент, за исключением того, что «диспетчеризация» и «сокращение» на самом деле просто обновляют состояние родительского компонента?

Я также не понимаю, что такое «отсоединение» редуктора, поскольку в этом фрагменте нет фактического хранения или использования store.replaceReducer (). Вы просто имеете в виду, что функция, подобная редуктору, может быть применима вне контекста структуры редуктора магазина?

Идея такова: вам не нужна библиотека redux с выделенным объектом хранилища для реализации архитектуры redux (prevState, action) => nextState . Состояние компонента React может быть вашим хранилищем, локальным для компонента, и вы реализуете диспетчеризацию самостоятельно, выполняя обновления состояния через React setState.

Да, это вроде как я думал, что вижу. Это была фраза «отстранение», которая меня действительно сбила с толку, потому что я знаю, что вы действительно можете позвонить store.replaceReducer() .

Что касается логики разделения между создателями действий и редукторами , я думаю, стоит отметить, что селекторы (mapStateToComponent) - еще одно хорошее место для их обработки (проверка, преобразование данных). Это создает хорошее разделение между истинным источником от сервера (редуктор) и данными, связанными с представлением, которые вычисляются (преобразовываются или фильтруются) источником (селектором).

Другой вопрос, который я часто вижу, - как создать модуль redux (создатели действий, редукторы, компоненты), который можно было бы повторно использовать извне. В основном, как избежать конфликта имен действий, когда у нас есть несколько модулей с одинаковым типом на одной странице, и как определить имя редуктора, чтобы его можно было использовать в createStore.

Да, нам определенно нужен раздел FAQ «Дизайнерские решения».

Вопрос для @ reactjs / redux: я обсуждаю возможность разделения FAQ на отдельные страницы по каждой теме. Текущая отдельная страница довольно длинная. Есть мнения?

Мне нравится иметь список ссылок на все вопросы в Оглавлении. Если мы сохраним это, я не вижу недостатков в разделении тем на разные страницы.

Да, я бы определенно сохранил FAQ.html, чтобы иметь полное оглавление, а затем, вероятно, имел бы отдельный оглавление на каждой странице только для ее записей.

Лучший способ организовать их, вероятно, - это то, что даст наилучшие результаты для тех, кто выполняет поиск в Google по соответствующему вопросу.

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

Хотелось бы узнать больше об усилителях магазина. И инъекционные редукторы для разделения кода. Примеры того и другого весьма ограничены, и им трудно следовать.

@Medros : Хм. Обе интересные темы, но, может быть, не столько «Часто задаваемые вопросы».

Несколько недель назад в Твиттере была хорошая дискуссия об усилителях магазина: https://twitter.com/acemarke/status/778813095221170176 . По сути, они наполовину намеренно не упоминаются в документации прямо сейчас, поскольку они в значительной степени являются функцией опытного пользователя, и в настоящее время ведется некоторая работа по изменению связанных с ними внутренних компонентов. Обсуждение на # 1813 немного о них говорит, и соответствующая проблема переделки - # 1702.

Для инъекционных редукторов вы можете посмотреть, как работают https://github.com/mxstbr/react-boilerplate и https://github.com/davezuko/react-redux-starter-kit . В моем списке надстроек Redux также есть множество библиотек, связанных с состоянием компонентов и управлением редуктором, которые могут быть актуальны.

Хороший прогресс сегодня. Разделили FAQ на отдельные страницы по категориям, сделали около половины запланированных обновлений существующих вопросов. Остальные попробую выбить завтра.

И часть «split + update» теперь доступна (см. # 2009).

У меня есть еще несколько вещей, которые я хотел бы сделать, прежде чем приступить к новым вопросам, поэтому я пока оставлю это открытым. Наверное, вернусь к этому через пару недель.

Рад помочь написать некоторые из них для вас. Есть мысли о том, с чего лучше всего начать?

Привет, спасибо!

С точки зрения того, как часто на самом деле спрашивают, добавление новой категории «Дизайнерские решения» было бы наиболее актуальным. Тем не менее, это также касается некоторых довольно технических аспектов.

Более легким местом для начала может быть добавление нескольких новых вопросов в раздел «Общие». На данный момент я перечислил следующие идеи: «Когда мне следует использовать Redux?», «Каковы плюсы и минусы использования Redux?» И «Чем Redux по сравнению с [Angular / Backbone / MobX]?».

Тем не менее, если есть конкретный вопрос, который бросается в глаза, это тоже работает. У нас нет конкретного крайнего срока, который мы пытаемся уложиться, просто куча вопросов, которые я видел, которые я бы хотел ответить в FAQ.

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

ОК, это звучит хорошо. Почему бы мне не начать с _Когда / зачем использовать Redux_ и _Redux state vs React state_. Вы хотите, чтобы я написал черновик и добавил новый PR, чтобы вы его рассмотрели, или у вас есть какой-то другой процесс, который вы предпочитаете использовать?

Ах ... извините, позвольте мне пояснить, что пытается изложить этот первый комментарий.

Моей целью было добавить дополнительные ссылки и информацию к существующим вопросам, а затем написать новые вопросы + ответы. Я уже закончил все под заголовком «Обновления существующих вопросов», то есть с частью «добавить новые ссылки». Это часть «напишите новые вопросы + ответы», в которой я сейчас ищу помощь.

Список потенциальных новых вопросов находится под заголовком «Новые темы» (начиная с «Когда мне следует изучать Redux?»). Все, что перечислено в этом разделе, заслуживает внимания.

Что касается рабочего процесса: вы хотите разветвить репозиторий Redux, создать ветку и начать работать над своими черновиками. Возможно, сначала можно разместить здесь ссылку на файл (ы) WIP, а затем, как только вы решите, что у вас есть готовый черновик, отправьте PR.

Хорошо, я начну с _Должен ли я использовать Immutable.js? _. Я только что закончил писать серию руководств по Immutable и использую его ежедневно, поэтому я хорошо знаком с проблемами, связанными с его использованием.

Звучит отлично! Связанный комментарий на Reddit - это мои собственные мысли о некоторых компромиссах. Я также просто добавил указатели на соответствующие разделы моего списка ссылок React / Redux, на неизменяемые данные и React perf в качестве дополнительных ресурсов.

Вопрос "Immutable.js", вероятно, принадлежит к новой категории, но не уверен, какой должна быть эта категория на данный момент. Может быть, создать на данный момент категорию «Неизменяемые данные» в своей ветке и начать писать на этой странице?

@markerikson First PR готов к рассмотрению: # 2120

@bundance : отлично, спасибо! Я посмотрю на него сегодня вечером или в пятницу.

Похоже, это отличный способ лучше понять Redux. Буду признателен за выполнение некоторых конкретных задач. Что имеет приоритет, кто-то их еще не делает и т. Д.

@ mateo-io: Конечно, спасибо за предложение помощи!

Если вы посмотрите на список в верхней части проблемы, все, что находится в разделе «Ожидание добавления», ... э-э ... ожидает добавления :) Никто в настоящее время не работает ни над одним из этих вопросов, поэтому они все честная игра.

Простым способом начать работу может быть работа над элементами «Обновления существующих вопросов». Например, есть несколько ссылок, которые я хотел бы добавить в раздел «Когда мне использовать Redux?» вопрос. Это должно быть довольно просто - просто добавьте ссылки в существующий список в конце этого вопроса в FAQ, с некоторыми краткими описаниями того, о чем каждая ссылка.

Другой хорошей отправной точкой может быть один из новых вопросов, например: «Зачем мне использовать конструкторы действий?» или «Когда мне следует использовать Redux?».

Если вы хотите сначала заняться чем-то другим, это нормально. Просмотрите список тем, которые я хотел бы добавить или обновить, и дайте мне знать, над какими разделами вы бы хотели поработать.

@markerikson 2370 для общего раздела часто задаваемых

Хочу помочь с добавлением новых ссылок в раздел «Структура кода»!

@gribnoysup : Отлично, рад это слышать! Идите вперед и создайте вилку репо и ветку для ваших правок и начните обновлять файл часто задаваемых вопросов "Структура кода". Самый простой первый шаг - просто добавить пару ссылок, которые я перечислил для обновления раздела «Где разместить бизнес-логику?». вопрос. Оттуда мы можем поговорить о добавлении новых вопросов / ответов на «Зачем использовать создателей действий?» и «инкапсулирующая логика».

@markerikson Я открыл новый запрос на https://github.com/reactjs/redux/pull/2494

@markerikson Мне интересно над этим поработать. Ничего страшного, если я возьму «Зачем использовать создателей действий?» элемент. Рад начать с чего-нибудь еще, если вам так удобнее.

@maxhallinan : да, было бы здорово! Составьте черновик нового вопроса FAQ, напишите PR, и мы сможем его там подправить. Спасибо!

@markerikson Мне тоже интересно, есть ли у вас что-нибудь, с чего я могу начать, что также обычно требуется сообществу?

@markerikson Сделал пиар раздела FAQ по дизайнерским решениям # 2528

@sbakkila : Отлично, спасибо! Постараюсь посмотреть завтра вечером или в среду.

@ Fyre91 : извините, что не ответил вам быстрее. Все в этом списке, что не было упомянуто в последних нескольких комментариях, является честной игрой :) Если вы хотите начать с пары предложений, вы можете поработать над пунктами «Обновления существующих вопросов», которые я перечислил для « одно дерево состояний »и вопросы« несколько отправок ».

@markerikson Мне очень жаль, что это заняло так много времени. Я открыл PR # 2535 для "Почему я должен использовать создателей действий?"

Я также открыл PR # 2537, чтобы добавить ссылки в раздел FAQ по действиям. FWIW, другие ссылки, перечисленные для обновления в этом описании проблемы, похоже, уже добавлены. В противном случае я бы включил их в этот пиар.

Я думал о том, чтобы перейти к вопросу «Когда я должен изучать Redux?» Этот вопрос касается конкретно React? В противном случае кажется, что вам следует изучить Redux, когда вы должны использовать Redux, что будет перекрывать уже ответ «Когда мне следует использовать Redux?».

@maxhallinan : Эх, это совсем не то, что касается React. И да, есть кое-что совпадение с «Когда мне использовать Redux?», Но я думаю, что это достаточно отчетливо, чтобы оправдать отдельную запись в FAQ.

@markerikson Хорошо, я

@ Fyre91 : круто, спасибо!

@markerikson Хорошо, звучит хорошо. Я беру «Когда мне изучать Redux?».

@markerikson Дальше я

@markerikson Далее я беру пункт пагинации / кеширования в разделе «Производительность». Просто чтобы подтвердить, актуальный вопрос: «Могу ли я кэшировать данные, разбитые на страницы, не вызывая проблем с памятью?»

@maxhallinan : примерно да. Другими мыслями, возможно, были такие, как «Как реализовать проверку кеша?», «Как мне обработать очистку кэшированных данных?», «Сколько я могу безопасно кэшировать в памяти?» И т. Д.

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

Это может легко превратиться в несколько отдельных вопросов, если мы чувствуем, что это нужно, и я не совсем уверен, что именно я хочу от этого увидеть. Сделайте удар по теме, посмотрите, что вы придумаете, и мы будем работать оттуда.

Я только что обновил список в верхней части обсуждения, чтобы отразить то, над чем я работал в последнее время. (На самом деле, понимаете ... Мне действительно следовало с самого начала сделать это списком дел с флажками, вместо того, чтобы вырезать и вставлять завершенный материал во второй раздел. Ну ладно.)

Приятно видеть, что список оставшихся вещей становится меньше!

@markerikson Updates to Existing Questions: Performance уже в мастере :)

@markerikson "Зачем

@gribnoysup , @maxhallinan : а, да, так и есть :)

Определенно добираюсь туда. Похоже, все обновления существующих вопросов выполнены, осталось только несколько новых элементов.

Только что возник новый вопрос «Дизайнерских решений»: «Почему Redux разделяет действия и обновления?»

Я думаю, у нас это хорошо получается. Мы можем отслеживать отдельные обновления FAQ по другим вопросам.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги