Какова официальная позиция React для выполнения обещаний внутри функций рендеринга? - PullRequest
0 голосов
/ 17 января 2020

В компоненте React появилась новая классная функция - Suspense. В настоящее время официально поддерживаются только компоненты, созданные с помощью функции React.lazy. Но неофициально хорошо известно, что внутренний компонент Suspense запускается, бросая обещание глубже в дерево рендеринга, и есть некоторые библиотеки, которые уже приняли эту технику, чтобы принести новый крутой опыт разработчика, например:

Также есть основной пакет реакции реагирующий кеш , который использует его (неофициально, конечно).

Имея все это в виду, я немного растерялся, потому что в React Docs нет никаких упоминаний о бросать обещания (другими словами, что запускает компонент Suspense), но в то же время есть много разговоров и библиотек, которые его используют. В обсуждении в Твиттере Дан Абрамов ответил, что API, скорее всего, изменится . Но все же ситуация запутанная.

Так что вопрос: безопасно ли начинать использовать эту технику в производстве? Если нет, то как я могу использовать библиотеки (даже на базе Facebook), которые уже приняли его? Наконец, если API (выдача обещаний) будет предметом, который будет изменен в будущем, могу ли я быть уверен, что это просто крошечное изменение, которое мне нужно принять в моей собственной реализации?

Спасибо, ребята!

Обновление

В соответствии с этими проблемами ( one , two ) кажется, что они все еще не уверены в будущем API. Скорее всего, они предложат publi c API (вероятно, они имеют в виду response-cache или что-то более общее), которое по сути является просто оболочкой для запуска механизма Promise.

1 Ответ

1 голос
/ 17 января 2020

Краткий ответ

Нет, это не безопасно. Даже если другие библиотеки используют его, вы не должны писать код на основе внутренних компонентов React (и, конечно, не в производстве!)

Длинный ответ

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

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

В любом случае, в таких случаях, как relay, вы можете использовать библиотеку, не слишком заботясь об обслуживании. Такие библиотеки, как relay, активно используются из Facebook (по крайней мере из того, что я знаю), поэтому обслуживание не будет проблемой.

Использование внутренних компонентов React в вашем приложении

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

Если вам нужен мой совет: придерживайтесь официальные версии React.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...