React Navigation: зачем использовать методы в объекте навигации вместо использования создателей действий и отправки (например, CommonActions)? - PullRequest
0 голосов
/ 05 августа 2020

В официальных документах для response-navigation говорится:

Настоятельно рекомендуется использовать методы объекта навигации вместо использования создателей действий и dispatch. Его следует использовать только для сложных случаев использования.

Но почему это так? Я не нашел объяснения этой убедительной рекомендации в документации по реакции-навигации.

С помощью CommonActions (или NavigationActions в реакции-навигации меньше 4.x) я могу красиво создавать функции навигации, к которым я могу получить доступ из любого места, без необходимости передавать navigation опору. И у меня не было проблем с ним, которые я мог бы связать с тем, что он был CommonAction вместо части navigation опоры - даже в более сложном сценарии ios с множеством экранов и специальной схемой маршрутизации.

1 Ответ

1 голос
/ 05 августа 2020

Есть несколько причин:

  • Методы объекта navigation строго проверяются на тип, т.е. если вы используете что-то вроде TypeScript или Flow, вы получите ошибки, если передадите неправильные значения. , это намного удобнее с объектами действий, которые будут регистрировать ошибки только во время выполнения.
  • Если метод существует, это означает, что связанный навигатор определенно отображается. Вы не можете позвонить по номеру openDrawer, если у вас нет ящика, но вы можете позвонить по номеру dispatch(DrawerActions.openDrawer()).
  • Это больше набирать navigate('Home') против dispatch(CommonActions.navigate('Home'))

без необходимости передавать опору навигации вокруг

Не знаю, как создатели действий помогают с этим, но вы можете просто использовать useNavigation

...