react-native-simple-portal v1.0.2
Simple Portal for React Native ·

react-native-simple-portal
This is a small implementation of Portals for React Native. It allows you to place components anywhere in the tree without hassle.
Features
- less than 70 lines of code (including spaces)
- written in
Typescript - able to create multiple portals
- compatibile with
Expo
Usage
Add the package to your project: yarn add react-native-simple-portal.
Then, wrap your app with the PortalProvider. The placement of this component has no influence on how your app looks, but any portals will have to be inside it.
export function App() {
return (
<PortalProvider>
<TheRestOfYourApp />
</PortalProvider>
)
}Now, you're all set to use portals. The library provides two components: PortalIn and PortalOut. Both of them accept a single prop - gateName. Anything you put in a PortalIn will be displayed inside the PortalOut with a mathing gateName.
For example:
function ExampleScreen() {
return (
<View>
<Component1 />
{/* ... */}
<PortalOut gateName="example" />
</View>
)
}
function Component1() {
return (
<View>
<Text>Hello, world!</Text>
<PortalIn gateName="example">
<Text>I've teleported!</Text>
</PortalIn>
</View>
)
}When you place this code in your app, the text "I've teleported" will not be a child of Component1, but instead of ExampleScreen.
NOTE: you should not create two PortalIns or PortalOuts with the same gateName. This will cause undefided behaviour.
Roadmap
- add tests
- implement hooks
- add use cases to readme (pressable with position absolute)