Creating a stack
We'll need to use 2 things to get you up and running with React Native Modalfy:
1.<ModalProvider>, which is going to wrap the whole application and use React Context in order to display the modals on top of everything.
2. createModalStack(), that we'll use to create the stack <ModalProvider> needs to work as expected.
Setting up the provider
Find the app root's component and put its current content inside <ModalProvider> as so:
import React from 'react'
import { Text, View } from 'react-native'
import { ModalProvider } from 'react-native-modalfy'
const App = () => (
<ModalProvider>
<Text>Welcome to React Native!</Text>
<Text>To get started, edit App.js</Text>
</ModalProvider>
)
export default App
You can be working on a more complex application with a lot of providers already. No worries to have here: React Native Modalfy can work wherever we render it in the app root component:
import React from 'react'
import { Provider } from 'react-redux'
import { ApolloProvider } from 'react-apollo'
import { ModalProvider } from 'react-native-modalfy'
import Navigation from './navigation'
import reduxStore from './redux'
import client from './graphql'
const App = () => (
<ApolloProvider client={client}>
<Provider store={reduxStore}>
<ModalProvider>
<Navigation />
</ModalProvider>
</Provider>
</ApolloProvider>
)
export default AppIf we run the previous examples, we'd get an error from the library. That's because <ModalProvider> is missing a stack of modals: let's fix that!
Configuring the stack
For this step, we'll use createModalStack() and pass its output to <ModalProvider> through the only prop the component accepts: stack. createModalStack() accepts 2 arguments: a modal configuration object (mandatory) and a default options object (optional):
import React from 'react'
import { ModalProvider, createModalStack } from 'react-native-modalfy'
import Navigation from './navigation'
import { ErrorModal } from './components/Modals'
const modalConfig = { ErrorModal }
const defaultOptions = { backdropOpacity: 0.6 }
const stack = createModalStack(modalConfig, defaultOptions)
const App = () => (
<ModalProvider stack={stack}>
<Navigation />
</ModalProvider>
)
export default AppIn this example, <ErrorModal> is a regular React component we're using as our 1st modal. React Native Modalfy will register it under the key 'ErrorModal'.
Given that we're working with normal JavaScript objects here, you can change that key by simply changing the modalConfig key, ie: const modalConfig = { MyCustomErrorModalName: ErrorModal }.
We now have a fully functional modal system, ready to be used and we'll see how in the following section.
Last updated
Was this helpful?