React-native-gesture-handler: рдПрдХ рдореЛрдбрд▓ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  71рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: software-mansion/react-native-gesture-handler

рдирдорд╕реНрддреЗ !
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рдореБрджреНрджрд╛ рд╣реИ, onGestureEvent рддрдм рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм GestureHandler рдШрдЯрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдПрдХ рдореЛрдбрд▓ рдкрд░ рд╣реЛрддрд╛ рд╣реИред рдЬрдм рдореИрдВ рдореЛрдбрд▓ рдХреЛ рдПрдХ рджреГрд╢реНрдп рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ al рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

IOS рдкрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ

Android Bug Can repro Important

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореЛрдбрд▓ рдХреЗ рдЕрдВрджрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реА рддрд░рдХреАрдм:

import { TouchableWithoutFeedback } from 'react-native';
import { RectButton } from 'react-native-gesture-handler';
<TouchableWithoutFeedback onPress={...}
    <RectButton>
         ...
    </RectButton>
</TouchableWithoutFeedback>

рд╕рднреА 71 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

+1
рдХреЛрдИ рдХрд╛рдо?

рдореИрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рдореЛрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рдореИрдВ рдмрд╕ рдЗрд╕реЗ рдкреВрд░реНрдг рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдХ рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реВрдВ

рдЕрдм рдХреЗ рд▓рд┐рдП рдореЛрдбрд▓ рд╕реНрдХреНрд░реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЧреЙрдЧрд▓рд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдФрд░ RN рд╕реЗ рдореЛрдбрд▓ рдЪреИрдЯ рдХрд░рдирд╛ рдмрд╣реБрдд рдЫреЛрдЯреА рдмрд╛рдд рд╣реИ

+1

рд╣рд╛рдп, @martinezguillaume , @mordaha , @csto
рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реА рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЖрд░рдПрди рдХреЛрд░ рдХреА рд╣реИред

@osdnk рдпрд╣

+1 рдЗрд╢рд╛рд░рд╛ рдореЛрдбрд▓ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдореИрдВ рднреА рдЖрдЬ рдЗрд╕ рдмрдЧ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред

рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ред рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЬреЗрд╕реНрдЪрд░ рдореЛрдбрд▓ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдкреЛ

рдореЗрд░реЗ рд▓рд┐рдП рднреА рд╡реИрд╕рд╛ рд╣реАред рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХреЗ PanResponder рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдкрд░ рдореЛрдбрд▓ - рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ: рдЬрдм рд╣рдо рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрдЧрд▓рд╛ рдХрджрдо рдЙрдард╛ рд░рд╣реЗ рд╣реИрдВ

<strong i="7">@Override</strong>
            protected ReactRootView createRootView() {
                return new RNGestureHandlerEnabledRootView(MainActivity.this);
            }

рдФрд░ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореЛрдбрд▓ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭрджрд╛рд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ?

рдореИрдВ рдПрдХ рдорд╛рдирдХ React Native Modal рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдореИрдВрдиреЗ рдПрдХ рдирдИ рд╕реНрдХреНрд░реАрди рдмрдирд╛рдХрд░ рдФрд░ рдЗрд╕реЗ рдПрдХ рдореЛрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд┐рдпрд╛ред рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП:

Navigation.showModal({
    component: {
      name: navRoutes.ImageModal,
      passProps: { image },
    },
  })

рдЗрд╢рд╛рд░реЛрдВ рдХреЛ рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рджреЛрдиреЛрдВ рдкрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЕрднреА рднреА рдкрд╛рд░рджрд░реНрд╢реА рдкреГрд╖реНрдарднреВрдорд┐ рдорд┐рд▓рддреА рд╣реИ рдЬреЛ рдореИрдВ рдЕрдкрдиреЗ рдореВрд▓ рдореЛрдбрд▓ рд╕реЗ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдореИрдВрдиреЗ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЙрд╕рдореЗрдВ рдЦреЛрджрд╛ рд╣реИред

  1. рдпрд╣ RNGH рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ ЁЯШТ
  2. рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрд░рд╕реА рд░реВрдЯ рджреГрд╢реНрдп рдХреЗ рдиреАрдЪреЗ рдмреАрд╕реА рдореЛрдбрд▓ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
  3. рдпрд╣ рдореЙрдбрд▓реНрд╕ рдХреЗ рддрдВрддреНрд░ рдХреЛ рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдмрджрд▓рдХрд░ рдареАрдХ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрдХрд░ RNRootView рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВред рджреЗрдЦреЗрдВ https://github.com/kmagiera/react-native-gesture-handler/blob/master/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.java
  4. рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдм рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рдо рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдореВрд▓ рдореЗрдВ рдЖрд░рдПрдирдЬреАрдПрдЪ рдХреЛрд░ рдореЗрдВ рдХреБрдЫ рдХреЛрдб рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрдЧрд░ рдХреЛрдИ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рддреЛ рдореИрдВ рдЦреБрд╢реА рд╕реЗ рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реВрдВрдЧрд╛ рдФрд░ рддреБрд░рдВрдд рд╡рд┐рд▓рдп рдХрд░ рджреВрдВрдЧрд╛ рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдЧрд╛ рдФрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

@martinezguillaume @mordaha @csto @ mars-lan @ParhamZare @ewendel @ рд╡рд╛рдпрд╛-рд▓рд╛рдн @Dmitrylolo @LaVielle

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рджреЛ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдПрдХ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред

https://github.com/kmagiera/react-native-gesture-handler/commit/139da18039683bed3c439c991c7eaf802086bf86

рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЗрд░рдгрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ

рдЕрд░реЗ @osdnk рдореБрдЭреЗ рдЕрдкрдиреЗ рдРрдк рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ RNGestureHandler, рдпрд╛ Android рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдХреБрдЫ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЭреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛?
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЖрдкрдХреЗ рдкрд┐рдЫрд▓реЗ рдкреНрд░рдпрд╛рд╕ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рдерд╛, рдФрд░ рдореИрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЧрд╛рдпрдм рд╣реИ, рдФрд░ рдпрджрд┐ рдЗрд╕реЗ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╡рд╣реА рддреНрд░реБрдЯрд┐ред

@kmagiera @osdnk рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ Touchable* рдореЛрдбрд▓ рдХреЗ рдЕрдВрджрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ

+1ред рдореИрдВ рдореЛрдбрд▓ рдХреЗ рд╕рд╛рде reanimated-bottom-sheet рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ

рдХреЛрдИ рд╕реБрдзрд╛рд░? рдпрд╛ рд╢рд╛рдпрдж, рдХреЛрдИ рдЕрдиреНрдп рдореЛрдбрд▓ рдШрдЯрдХ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдЧреНрд░рд╕реНрдд рдирд╣реАрдВ рд╣реИ? RN рдХрд╛ рдореЛрдбрд▓ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХрд╛рдлреА рдЦрд░рд╛рдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдмрдЧреНрд╕ рд╕реЗ рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдЕрдЧрд░ рдЕрд▓рд░реНрдЯ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдП)

@ рдХреНрд░рд┐рд╢реНрдЪрд┐рдпрдиреЛрдХрд╛рдЬрд╝рд┐рдиреНрд╕рдк I рдиреЗ https://github.com/react-native-community/react-native-modal

рдЕрдЬреАрдмред рдпрд╣ рдШрдЯрдХ рдЕрднрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рддреМрд░-рддрд░реАрдХреЛрдВ рдХрд╛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдиреЗ рдХрд░рджреА
рдЖрдкрдХреЛ рдлрд░реНрдХ рдкрдбрд╝рддрд╛ рд╣реИ?

рдПрд▓ рдЬреБред, 30 рдбреЗ рдореЗрдпреЛ рдбреЗ 2019 14:38, рдордВрдЧрд▓ рд▓реИрди рд╕реВрдЪрдирд╛рдПрдВ @github.com
рдЕрдиреБрд▓реЗрдЦ:

@cristianoccazinsp https://github.com/cristianoccazinsp рдореИрдВ рд╕рдорд╛рдкреНрдд рд╣реБрдЖ
https://github.com/react-native-community/react-native-modal рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/kmagiera/react-native-gesture-handler/issues/139?email_source=notifications&email_token=ALU263ACF3LNSRSPFWR45ELPYAGJTA5CNFSM4EZ6UZL2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWS7SOQ#issuecomment-497416506 ,
рдпрд╛ рдзрд╛рдЧрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ALU263GRH2KHBXUZBGHNKA3PYAGJTANCNFSM4EZ6UZLQ
ред

@ рдХреНрд░рд┐рд╕реНрдЯрд┐рдпрд╛рдиреЛрдХрд╛рдЬрд╝рд┐рдиреНрд╕рдк рдХреЗрд╡рд▓ рд╕реНрдХреНрд░реАрди рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░рдПрди рдХреЗ рдореЛрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ coverScreen рд╕реЗ false рд╕реЗрдЯ рдХрд░рдХреЗ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

@ рдХреНрд░рд┐рд╕реНрдЯрд┐рдпрд╛рдиреЛрдХрд╛рдЬрд╝рд┐рдиреНрд╕рдк рдХреЗрд╡рд▓ рд╕реНрдХреНрд░реАрди рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░рдПрди рдХреЗ рдореЛрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ coverScreen рд╕реЗ false рд╕реЗрдЯ рдХрд░рдХреЗ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЗрд╕ рдкреНрд░реЛрдк рдХреЗ рд╕рд╛рде рдлреБрд▓рд╕реНрдХреНрд░реАрди рдореЛрдбрд▓ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдРрдк рдХреЗ рд░реВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рд░реЗрдВрдбрд░ рдирд╣реАрдВ рд╣реИ?

@jvaclavik рдореИрдВрдиреЗ рдЗрд╕реЗ https://github.com/callstack/react-native-paper рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреЛрд░реНрдЯрд▓ рдирд╛рдордХ рдПрдХ рдШрдЯрдХ рд╣реИред

рдпрд╣ рд╕рднреА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм propagateSwipe ред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ https://github.com/kmagiera/react-native-screens/issues/61 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ

рдПрдВрдбреНрд░реЙрдпрдб рдореЗрдВ рджреЗрд╢реА рд╕реНрдХреНрд░реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдкрд░реАрдХреНрд╖рдг рдФрд░ 'reanimated-bottom-sheet' рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо

рдЕрдЧрд░ (Platform.OS === 'ios') {
useScreens ();
}

рдкрд╛рд░рджрд░реНрд╢реА рдмреАрдЬреА рдХреЗ рд▓рд┐рдП рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдореЛрдбрд▓ рдХреЙрдиреНрдлрд┐рдЧ рд╣реИ

рд╕реНрдХреНрд░реАрдирдСрди: {
рд╕реНрдХреНрд░реАрди:
рдиреЗрд╡рд┐рдЧреЗрд╢рди: {
рдЗрд╢рд╛рд░реЗ рд╕рдХреНрд╖рдо: рдЧрд▓рдд
},
}
{{
рдореЛрдб: 'рдореЛрдбрд▓',
рдкрд╛рд░рджрд░реНрд╢реА рдХрд╛рд░реНрдб: рд╕рдЪ,
рд╢реАрд░реНрд╖ рд▓реЗрдЦ: 'рдХреЛрдИ рдирд╣реАрдВ',
рдХрд╛рд░реНрдб рд╕реНрдЯрд╛рдЗрд▓: {
рдкреГрд╖реНрдарднреВрдорд┐ рд░рдВрдЧ: 'рдкрд╛рд░рджрд░реНрд╢реА',
рдЕрдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛: рез
},
рдЯреНрд░рд╛рдВрд╕реНрдлреЛрдиреНрдлрд┐рдЧ: () => ({
рдХрдВрдЯреЗрдирд░ рд╢реИрд▓реА: {
рдкреГрд╖реНрдарднреВрдорд┐ рд░рдВрдЧ: 'рдкрд╛рд░рджрд░реНрд╢реА',
}
})
}

@osdnk рдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛?

рдпрд╣ рдПрдХ рдмрд╣реБрдд рджрд░реНрдж рдерд╛ред
рдореИрдВрдиреЗ рдЗрд╕реЗ Google рдореЗрдВ рд╣рд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рд╣реИ, рдЕрдкрдиреЗ рдмрд╛рд▓реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдкреГрдереНрд╡реА рдкрд░ рдПрдХ рд╣реА рдШрдЯрдХ iOS рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЖрд╡реЗрджрди рдХреЗ рдЕрдВрджрд░

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ - рдпрд╣ рдореЛрдбрд▓ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдЕрджреНрдпрддрди рдХрд╛ рдкрддрд╛ рд╣реИ?
рдХреНрдпрд╛ рд╣рдореЗрдВ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдФрд░ RN рдкреИрди рд╣реИрдВрдбрд▓рд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рдХреЛрдИ рднреА рд╕реБрдЭрд╛рд╡ рд╣реИ ?

https://github.com/react-native-community/react-native-modal рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдореБрдЭреЗ рднреАред RectButton https://github.com/react-native-community/react-native-modal рдХреЗ рдЕрдВрджрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

@deflorilemarului @ kesha-antonov @fauker
рдЖрдк рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рдХрд░реВрдВрдЧрд╛, рдФрд░ рди Modal , рдФрд░ рди рд╣реА Modal рдЖрдзрд╛рд░рд┐рдд рд╕рдВрдХреБрд▓ (рдЕрдЧрд░ рд╡реЗ рджреЗрд╢реА рдирд┐рд░реНрднрд░рддрд╛ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рд╡реЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ react-native рдХреЗ Modal ) рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдВрдЧреЗ (рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрди рд╕рднреА рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ)ред
рд╕рднреА gesture- рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдХреЛрдВ (рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмреЙрдЯрдорд╢реАрдЯ-рд╡реНрдпрд╡рд╣рд╛рд░) рдХрд┐рд╕реА рднреА рдЫреВ / рд╕реНрд╡рд╛рдЗрдк рдЖрджрд┐ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЬрдм Android рдкрд░ <Modal>...</Modal> рдЧрдпрд╛ рд╣реЛ;
рд╡рд╣рд╛рдБ 3 рд╕рдорд╛рдзрд╛рди рдореИрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рдпрджрд┐ рдЖрдк рдореЙрдбрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЖрдкрдХреЛ PanResponder рдХреБрдЫ рд╕реНрд╡рд╛рдЗрдк-рдЖрдзрд╛рд░рд┐рдд рдШрдЯрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ; рдпрд╣ рджрд░реНрдж рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕реАрдзрд╛ рд╣реИ;
  2. рдРрд╕реЗ рдореЛрдбрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ portals ред рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреЛрд░реНрдЯрд▓реНрд╕ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рди рд╣реА рдореЛрдбрд▓реНрд╕- рдкреЛрд░реНрдЯрд▓реНрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛрд╕реНрдЯ рд╣реИ - рд▓реЗрдХрд┐рди рд╡реЗ рд╣реЛрд╕реНрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдРрдк рд╕реНрдЯреИрдХ рдХреЗ рдКрдкрд░ рдкреВрд░реНрдг рджреГрд╢реНрдп рдореЗрдВ рдореЛрдбрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╣реИрдВ; рдпрд╣ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдмрдЪреНрдЪреЛрдВ рдХреЗ рдХрд╛рд░рдг useContext() рдХреЙрд▓ рдХреЛ рдвреАрд▓рд╛ рдХрд░ рджреЗрдВрдЧреЗ; рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ navigation рд╕рдВрджрд░реНрдн рдЦреЛ рдЧрдпрд╛ рд╣реИ;
  3. рдиреЗрд╡рд┐рдЧреЗрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ( react-navigation ); рдпрд╣ рдПрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдкреАрдЖрдИ рд╣реИ ... рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ - рдПрдХ рдХреЗ рд▓рд┐рдП рдЖрдк рдПрдХ рд╕рд┐рдВрдЧрд▓ рд╕реНрдХреНрд░реАрди рдХреЛ рдореЛрдбрд▓ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдЯреИрдХ рдореЛрдбрд▓ рдореЛрдб рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ; рдпрд╣ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдЫрдбрд╝реА рдХрд░рддрд╛ рд╣реВрдВред

рдЦреИрд░, рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рд╣реИ - рдкреИрдЪ рджреЗрд╢реА рдПрдВрдбреНрд░реЙрдЗрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдпрджрд┐ рдЖрдк рдПрдХреНрд╕рдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ) рдпрд╛ рдХрд┐рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдкреИрдЪ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВ рдФрд░ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдПрдХреНрд╕рдкреЛ рдореЗрдВ рд╡рд┐рд▓рдп рди рд╣реЛ рдЬрд╛рдПред

рдкреА рдПрд╕
рдореБрдЭреЗ рдЧрд▓рдд рдордд рд╕рдордЭреЛ, рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрджреНрднреБрдд рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬреЛрд░ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХрд┐рддрдиреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЕрдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдмреЗрд╣рддрд░ рдЕрдиреБрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреАрдбрд╝реЗ рдореБрдЭреЗ рдЕрдкрдиреЗ рдмрд╛рд▓реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдореВрд▓ рд╕рдВрджрд░реНрдн рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрджрд┐ рд╣рд╛рдВ:

Android рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ RNGH рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЧрдИ рдПрдХ рд╡рд┐рд╢реЗрд╖ рджреЗрдЦрднрд╛рд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

рдЕрдкрдиреА MainActivity.java рдлрд╝рд╛рдЗрд▓ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
Screen Shot 2019-11-30 at 12 17 07 PM

рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдБ рдХреА рдпреЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛

рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдореВрд▓ рд╕рдВрджрд░реНрдн рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрджрд┐ рд╣рд╛рдВ:

Android рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ RNGH рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЧрдИ рдПрдХ рд╡рд┐рд╢реЗрд╖ рджреЗрдЦрднрд╛рд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

рдЕрдкрдиреА MainActivity.java рдлрд╝рд╛рдЗрд▓ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
Screen Shot 2019-11-30 at 12 17 07 PM

рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдБ рдХреА рдпреЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛

рд╣рд╛рдВ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рд▓рдЧрднрдЧ рдЕрдкрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдРрдк рдХреЛ рд╕реНрд╡рд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдирд┐рд░рд╛рд╢ рд╣реЛ рдЧрдпрд╛ред

рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ
рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореЛрдбрд▓ рдмрджрд▓реЗрдВ ...

рд╣рд╛рдп @romanonthego ,

рдЦреИрд░, рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рд╣реИ - рдкреИрдЪ рджреЗрд╢реА рдПрдВрдбреНрд░реЙрдЗрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдпрджрд┐ рдЖрдк рдПрдХреНрд╕рдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ) рдпрд╛ рдХрд┐рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдкреИрдЪ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВ рдФрд░ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдПрдХреНрд╕рдкреЛ рдореЗрдВ рд╡рд┐рд▓рдп рди рд╣реЛ рдЬрд╛рдПред

рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореЗрд░реЗ рдореВрд▓ Android рдХреЛрдб рдХреЛ рдХрд┐рд╕ рдкрдХреНрд╖ рдореЗрдВ рдкреИрдЪ рдХрд░рдирд╛ рд╣реИ?

@osdnk рдпрд╣ рд░реЛрдорд╛рдВрдЪрдХ рд╣реИред рдХреНрдпрд╛ рдпрд╣ DialogFragment рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛?

# 937 рдХреА рдХреЛрд╢рд┐рд╢ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ...

рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ wix рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ? рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рд╕реНрдХреНрд░реАрди рдЬреЗрд╕реНрдЪрд░рд╣реИрдВрдбрд▓рд░рд░реВрдЯрдПрдЪрдУрд╕реА рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рд╣реИ (рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп, рдЧреИрд░ рдореЛрдбрд▓ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ)ред

рдпрд╣ рд╕реНрдХреНрд░реАрди рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рдореЛрдбрд▓ рдореЗрдВ рд░реЗрдХреНрдЯрдмрдЯрди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА (рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдореЗрдВ рд╣реИ)

  renderSearchScreen = () => {
    const { showSearchHistory } = this.state;
    const ExampleWithHoc = gestureHandlerRootHOC(() => {
      return (
        <View style={genericStyles.container}>
          <SearchScreen
            searchBar={{
              ...this.searchBar,
              searchQuery: this.props.searchQuery,
            }}
            onBackPress={() => {
              this.setState({ showSearchHistory: false });
            }}
          />
        </View>
      );
    });

    if (showSearchHistory) {
      return (
        <RNModal
          animationType="fade"
          transparent
          visible={this.state.showSearchHistory}
          onRequestClose={() => {}}>
          <ExampleWithHoc />
        </RNModal>
      );
    }

    return null;
  };

рдЬрдм рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореЛрдбрд▓ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░реЗрдХреНрдЯрдмрдЯрди рдСрдирд╕реНрдкреИрди рдИрд╡реЗрдВрдЯ рдХреЛ рдлрд╛рдпрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдирдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдиреНрдпреВрдирддрдо рдкреНрд░рдЬрдирди рдпреЛрдЧреНрдп рдбреЗрдореЛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВ # 848 # 676 # 835 (рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдбреБрдкреНрд▓рд┐рдХреЗрдЯ) рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред

рдХреЛрдбрд╝рд╛ # 937

рд╡рд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИ! рдпрд╣ рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП react-native-modal рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐!

_ // рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореЛрдбрд▓ рдпрд╛ рддреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ 1.6.0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП,

рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рдереЛрдбрд╝рд╛ рдЦреЗрд▓рд╛ рд╣реИ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ, рдХрд┐ рдореИрдВ react-native-gesture-handler @react-navigation/stack рдЕрдВрджрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛, рдЕрдЧрд░ рдЗрд╕реЗ рдПрдХ рдореЛрдбрд▓ рдХреЗ рдЕрдВрджрд░ рд░рдЦрд╛ рдЬрд╛рдП (рддреЛ рдореВрд▓ рд░реВрдк рд╕реЗ Stack.Navigator > SomeScreenComponent > Modal > gestureHandlerRootHOC(PanGestureHandler) рд╡рд┐рдлрд▓)ред

рдЕрдЧрд░ рдореИрдВ рд╕реНрдЯреИрдХ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдХреЛ рдХрд╛рдЯрддрд╛ рд╣реВрдВ рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЯреИрдм рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдЯреИрдХ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдХреА рдЧрд▓рддреА рд╣реИред

рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг:

[email protected]
@react-navigation/[email protected]
@react-navigation/[email protected]

рдореИрдВ рдПрдХ рдбреЗрдореЛ рд░реЗрдкреЛ ASAP рд╕реЗрдЯрдЕрдк рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛, рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдХреЛрдИ рдФрд░ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдпрд╣рд╛рдБ рдПрдХ рдбреЗрдореЛ рдРрдк рд╣реИ ( npx react-native init рд╕реЗ рд▓рдЧрднрдЧ рдЦрд╛рд▓реА), рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджрд┐рдЦрд╛рдПрдЧрд╛ред рдЖрдк рдРрдк рдХреЗ рдЕрдВрджрд░ рд╕реНрдЯреИрдХ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдХреЛ рдЯреЙрдЧрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ PanGestureHandler рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рдХреИрд╕реЗ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

https://github.com/mxmzb/react-native-breakable-app

рдореЗрд░рд╛ рднреА рд╡рд╣реА рдореБрджреНрджрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Stack.Navigator Android рдкрд░ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдореИрдВ рдПрдХ рдореЛрдб = "рдореЛрдбрд▓" рдпрд╛ "рдХрд╛рд░реНрдб" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рддреЛ рдореИрдВ рдЖрд╕рдкрд╛рд╕ рдЦреЗрд▓ рд░рд╣рд╛ рдерд╛ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдерд╛

import { SafeAreaView, Button } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack'

import { enableScreens } from 'react-native-screens';
enableScreens(); // <-- this fucked it up

const Screen1 = ({ navigation }) => {
    return (
      <SafeAreaView style={{ flex: 1 }}>
        <Button title="Open Modal" onPress={() => navigation.push('Modal')} />
      </SafeAreaView>
    )
  }

  const Screen2 = ({ navigation }) => {
    return (
      <SafeAreaView style={{ flex: 1 }}>
        <Button title="Close Modal" onPress={() => navigation.goBack()} />
      </SafeAreaView>
    )
  }

const App = () => {

return (
        <NavigationContainer>
          <Stack.Navigator headerMode="none">
            <Stack.Screen name="Main" component={Screen1} />
            <Stack.Screen name="Modal" component={Screen2} />
          </Stack.Navigator>
        </NavigationContainer>
  )

}

рдлрд┐рд░ рдореИрдВрдиреЗ рдпрд╣ рд▓рд╛рдЗрди рд╣рдЯрд╛ рджреА;
enableScreens();

рдФрд░ рдлрд┐рд░ рдЗрд╕рдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдореЛрдбрд▓ рдХреЗ рдЕрдВрджрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реА рддрд░рдХреАрдм:

import { TouchableWithoutFeedback } from 'react-native';
import { RectButton } from 'react-native-gesture-handler';
<TouchableWithoutFeedback onPress={...}
    <RectButton>
         ...
    </RectButton>
</TouchableWithoutFeedback>

рдореИрдВ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВред рдЪрд╛рд░реЛрдВ рдУрд░ рдХреЛрдИ рдХрд╛рдо?

рдореИрдВ рдПрдХ рдореЙрдбрд▓ рдХреЗ рдЕрдВрджрд░ https://github.com/osdnk/react-native-reanimated-bottom-sheet рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕реНрдХреНрд░реАрди рдПрдиреАрдореЗрд╢рди рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛:

https://github.com/osdnk/react-native-reanimated-bottom-sheet/issues/143#issuecomment -614300015

рдореЛрдбрд▓ рдХреЗ рдЕрдВрджрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реА рддрд░рдХреАрдм:

import { TouchableWithoutFeedback } from 'react-native';
import { RectButton } from 'react-native-gesture-handler';
<TouchableWithoutFeedback onPress={...}
    <RectButton>
         ...
    </RectButton>
</TouchableWithoutFeedback>

рдЕрд░реЗ @ рдЧрд┐рдбрдпреВрдо ред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдпрд╣рд╛рдБ рдХреИрд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рдЧрдИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЪрд╛рд▓ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж рджреЛрд╕реНрдд!

рдпрд╣рд╛рдБ рдПрдХ рдбреЗрдореЛ рдРрдк рд╣реИ ( npx react-native init рд╕реЗ рд▓рдЧрднрдЧ рдЦрд╛рд▓реА), рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджрд┐рдЦрд╛рдПрдЧрд╛ред рдЖрдк рдРрдк рдХреЗ рдЕрдВрджрд░ рд╕реНрдЯреИрдХ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдХреЛ рдЯреЙрдЧрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ PanGestureHandler рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рдХреИрд╕реЗ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

https://github.com/mxmzb/react-native-breakable-app

рдлрд┐рд░, рдХреНрдпрд╛ рдЙрдкрд╛рдп рд╣реИ?

рдореБрдЭреЗ рдЕрдм рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ ...ред
рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди рдЕрднреА рддрдХ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ?

рдпрд╣ рдЕрднреА рднреА 1.6.0 рдкрд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ

рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣рд░ рд╕реБрдЭрд╛рд╡ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ рд╣реИред рдХреГрдкрдпрд╛ рдЗрд╕рдХреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдорджрдж рдХрд░реЗрдВред
0.62.2 рдореЗрдВ рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА рд╕рдВрд╕реНрдХрд░рдг рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдЗрд╢рд╛рд░рд╛-рд╣реИрдВрдбрд▓рд░ 1.5.6 рдФрд░ 1.6.0 рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

рдЕрднреА рднреА ^1.7.0 рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ

рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ: -1:

рд╣рдо wix-рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдХреБрдЫ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ?

рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдПрдХ рд╕рдВрднрд╡ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

https://www.youtube.com/watch?v=tLQjGHDiRkM

@steniowagner рдХрд╕реНрдЯрдо рдореЛрдбрд▓ рдХреА рддрд░рд╣ рд╣реИ? рдореИрдВ рдЗрд╕рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛
рдмрд╕ рд░рд┐рдПрдХреНрд╢рди-рдиреЗрд╡реАрдЧреЗрд╢рди рдпрд╛ рджреЗрд╢реА-рд╕реНрдЯреИрдХ рдореЛрдбрд▓ рдХреЗ рд╕рд╛рде рдЬрд╛рдПрдВ, рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╣рдореНрдо, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡реАрдЧреЗрд╢рди рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛), рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕ рд╕рдордп рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред

рд╢реБрдХреНрд░рд┐рдпрд╛ @ рдП-рдИрдж!

рдбреЙрдХреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░
https://docs.swmansion.com/react-native-gesture-handler/docs/#usage -with-modals-on-android

рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

@gideaoms рдЬреЛ рдЪрд╛рд▓реЗрдВ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИрдВ рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдореЙрдбрд▓ рдХреЗ рдЕрдВрджрд░ PinchGestureHandler рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

рдореЛрдбрд▓ рдХреЗ рдЕрдВрджрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реА рддрд░рдХреАрдм:

import { TouchableWithoutFeedback } from 'react-native';
import { RectButton } from 'react-native-gesture-handler';
<TouchableWithoutFeedback onPress={...}
    <RectButton>
         ...
    </RectButton>
</TouchableWithoutFeedback>

рдпрд╣ рдореБрджреНрджрд╛ 2 рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рдкреБрд░рд╛рдирд╛ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ?

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдРрдк рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рд╕реНрд▓рд╛рдЗрдбрд░ рдШрдЯрдХ рдмрдирд╛рдП рд╣реИрдВ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдРрдк рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЙрдбрд▓ рд╣реИрдВ

рдореИрдВрдиреЗ gestureHandlerRootHoC рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреНрд░реАрди рдФрд░ рдореЛрдбрд▓ рдШрдЯрдХ рдХреЛ рд▓рдкреЗрдЯрд╛ рд╣реИ (wix / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)

рдореИрдВрдиреЗ рд╕реНрдХреНрд░реАрди рдФрд░ рдШрдЯрдХ рджреЛрдиреЛрдВ рдХреЛ рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд┐рдирд╛ gestureHandlerRootHoc рд╕рд╛рде рд▓рдкреЗрдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред рдореИрдВрдиреЗ рдореЙрдбрд▓ рдкрд░ рд╕реНрд╡рд╛рдЗрдк-рдбрд╛рдЙрди-рдЯреВ-рдЖрдЙрдЯ рдмрд░реНрдЦрд╛рд╕реНрддрдЧреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП RectButton рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ PanGestureHandler рд╣реИред рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ iOS рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрдм рд╕реЗ рдореИрдВ react-native-modal рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрд╡рд╛рдЗрдк-рдЯреВ-рдЖрдЙрдЯ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рдпрд╣ рддрдм рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореЛрдбрд▓ рдХреЗ рдЕрдВрджрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕рд╛рдордЧреНрд░реА рди рд╣реЛ рдХреНрдпреЛрдВрдХрд┐ рддрдм рдпрд╣ рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рджреЛрдиреЛрдВ рдкрд░ рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдЯрдХ рдЧрдпрд╛ рд╣реВрдВ ...

рд╕рд╛рд░рд╛рдВрд╢ рдореЗрдВ:

  1. тЭМ RNGH react-native <Modal> рдШрдЯрдХ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ (рднрд▓реЗ рд╣реА рдШрдЯрдХ gestureHandlerRootHOC рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╣реЛ)
  2. тЬЕ RNGH wix/react-native-navigation рд╕реНрдХреНрд░реАрди рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ Navigation.showModal (рднрд▓реЗ рд╣реА рд╕реНрдХреНрд░реАрди gestureHandlerRootHOC рдореЗрдВ рд▓рд┐рдкрдЯреА рд╣реЛ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ
  3. тЬЕ RNGH рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ react-navigation modal: true рд╕рд╛рде enableScreens() / createNativeStackNavigator() ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдореИрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдореЛрдбрд▓-рдПрдирд┐рдореЗрдЯреЗрдб рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдЬреЗрд╕реНрдЪрд░-рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдореЛрдбрд▓-рдПрдирд┐рдореЗрдЯреЗрдб рдХреЗрд╡рд▓ рдПрдХ рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред

@flyskywhy рдЕрдЧрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА рдореЛрдбрд▓ рдПрдирд┐рдореЗрдЯреЗрдб рдХреА рддрд░рд╣ рдПрдХ рдЕрд▓рдЧ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА рдореЛрдбрд▓ рдпрд╣ рддреЛ рдХреИрд╕реЗ рд╕рдм рдХреБрдЫ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИ? рдЕрдЧрд░ рдпрд╣ рдПрдХ рдирд┐рд░рдкреЗрдХреНрд╖ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рддреЛ рдпрд╣ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

@ waheedakhtar694 , рдпрд╣ рдирд┐рд░рдкреЗрдХреНрд╖ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ: рдЕрдЯрдХ_рдЯ_рдЯреЙрдиреНрдЧ_рдХреНрд▓реЛрд╕реНрдб_рдпреЗрдЬрд╝:

@jvaclavik рдореИрдВрдиреЗ рдЗрд╕реЗ https://github.com/callstack/react-native-paper рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреЛрд░реНрдЯрд▓ рдирд╛рдордХ рдПрдХ рдШрдЯрдХ рд╣реИред

@Jvaclavik рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдкрддреНрд░ рд╕реЗ рдкреЛрд░реНрдЯрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдРрдк рдХреЛ рдкреЗрдкрд░рдкреНрд░реЙрдЗрдбрд░ рдХреЗ рд╕рд╛рде рдореЙрдбрд▓реНрд╕ рдХреЛ рдЗрд╢рд╛рд░реЗрд╣реИрдВрдбрд▓рд░рд░реВрдЯрд╣реЙрдХ рдФрд░ рдкреЛрд░реНрдЯрд▓ рдХреЗ рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рд▓рдкреЗрдЯ рджрд┐рдпрд╛
рдЕрдм рдиреАрдЪреЗ-рд╢реАрдЯ рдПрдВрдбреНрд░реЙрдЗрдб ЁЯШН рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ

_EDIT: рдХрд┐рд╕реА рдХрд╛рд░рдгрд╡рд╢ рдкреИрди рдЬреЗрд╕реНрдЪрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдСрдирдПрдк рдЗрд╡реЗрдВрдЯреНрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рд░рд┐рдкрд▓ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) ...
EDIT 2: рдпрд╣ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереА, рдореИрдВрдиреЗ рдЗрд╕реЗ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ" рд╕реЗ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рд╣рд╛рд╡рднрд╛рд╡-рд╣реИрдВрдбрд▓рд░" _ рдореЗрдВ рдмрджрд▓рдиреЗ рдпреЛрдЧреНрдп рдЖрдпрд╛рддреЛрдВ рдХреЛ рддрдп рдХрд┐рдпрд╛ред

рдпрд╣рд╛рдБ рдХреБрдЫ рдХреЛрдб рдЖрдк рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ

/*
 App.js:
 - import { Provider as PaperProvider } from "react-native-paper";
 - wrap your App with PaperProvider
*/

// ModalFixed.js
import { Portal } from 'react-native-paper';
import { gestureHandlerRootHOC } from 'react-native-gesture-handler';

const ModalFixed = (props) => {
  <View style={styles.modal}>
    <View style={styles.shadow} />
    {/* MODAL CONTENT HERE, you can put props.children to reuse this component */}
  </View>
}

const styles = StyleSheet.create({
  modal: {
    width: "100%",
    height: "100%"
  },
  shadow: {
    position: "absolute",
    width: "100%",
    height: "100%",
    backgroundColor: "rgba(0,0,0,0.3)",
  }
})

const _ModalFixed = gestureHandlerRootHOC(SheetPopup)
export default (props) => {
  return (
    <Portal>
      <_ModalFixed {...props} />
    </Portal>
  )
}

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:
<TouchableWithoutFeedback onPress={() => { console.log("press"); }} > <Text> <RectButton> ... </RectButton> </Text> </TouchableWithoutFeedback>

рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди? рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдИрдУрдПрд╕ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдореЛрдбрд▓ рд╕рд┐рд░рджрд░реНрдж рд╕рд╛рдмрд┐рдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рдмрд▓реНрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рддреМрд░-рддрд░реАрдХреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣реЗрдВрдЧреЗ ... рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдбрд┐рдЬрд╛рдЗрди рдУрд╡рд░рд╣рд╛рд▓ рд╣реИред : /

@DavidAPears рдореЗрдВ рдЖрдкрдиреЗ gestureHandlerRootHOC рдореЙрдбрд▓реНрд╕ рд▓рдкреЗрдЯрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ?

рдХреБрдЫ рдЗрд╕ рддрд░рд╣ ?


const ModalInner = gestureHandlerRootHOC(function GestureExample() {
  return (
    <View>
      { RNGH components . }
    </View>
  );
});

export default function ModalForX() {
  return (
    <Modal animationType="slide" transparent={false}>
      <ModalInner />
    </Modal>
  );
}


Portal рдХрд╛ react-native-portalize рдФрд░ gestureHandlerRootHOC рдХрд╛ рд╕рдВрдпреЛрдЬрди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХреБрдЫ:

<Portal>
   <Modal>
      <GestureHandlerRootHOCWrappedComponent />
   </Modal>
</Portal>

рдореЛрдбрд▓ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдХрд╡рд░рд╢рд░реАрди = {рдЧрд▓рдд} рд╕реЗрдЯ рдХрд░рдирд╛ред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдореЛрдбрд▓ рдХреЛ рд╕реНрдХреНрд░реАрди рдХреА рдЬрд░реВрд░рдд рд╣реИ

рдЖрдпрд╛рдд {рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо, рдореЛрдбрд▓} react рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ тАЩрд╕реЗ;
'рд░рд┐рдПрдХреНрдЯ-рджреЗрд╢реА-рдЬреЗрд╕реНрдЪрд░-рд╣реИрдВрдбрд▓рд░' рд╕реЗ {gureureHandlerRootHOC} рдЖрдпрд╛рдд рдХрд░реЗрдВ;
'{/AnimatedBottomSheet' рд╕реЗ {{AnimatedBottomSheet} рдЖрдпрд╛рдд рдХрд░реЗрдВ;

const AnimatedBottomSheetWrapper = Platform.OS === 'android'? рдЗрд╢рд╛рд░рд╛

рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдореЛрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдмрдЧрд▓ рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╣рд╛рд╡реЗрд▓рд░рд░реВрдЯHOC (рдпрд╣ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдореЙрдбрд▓ + рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдЬрд╛рд░реА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП = рд╕рд╣реА рдФрд░ рдХреБрдВрдЬреА рдХреЗ рд╣рд░ рдкреНрд░реЗрд╕ рдкрд░, рдХреАрдмреЛрд░реНрдб рдмрдВрдж рд╣реЛ рд░рд╣рд╛ рдерд╛) рддреЛ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдореИрдВрдиреЗ рдХреА рд╣реИ, рд╡рд╣ рд╣реИ рдореЛрдбрд▓ рдЪрд┐рд▓реНрдбреНрд░рди рд░реИрдкрд░, рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

import Modal from 'react-native-modal';
import { gestureHandlerRootHOC } from 'react-native-gesture-handler';

const GestureHandlerWrapper = gestureHandlerRootHOC(
  ({ children }) => <View>{children}</View>,
  { flex: 0 }
);

export const CustomModal: React.FC<Props> = ({
  children,
...rest
}) => {
  return (
    <Modal
      {...rest}
    >
      <GestureHandlerWrapper>    
          {children} 
      </GestureHandlerWrapper>
    </Modal>
  );
};
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

neiker picture neiker  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Agoujil2saad picture Agoujil2saad  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

chrisdrackett picture chrisdrackett  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tallen11 picture tallen11  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

enahum picture enahum  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ