icon |
---|
bookmark |
{% hint style="info" %}
HOC that provides the modal
prop to a wrapped Class component. The modal
prop injected bywithodal()
is covered in ModalProp
.
{% endhint %}
{% hint style="danger" %}
Note: PreferuseModal()
Hooks if you're using a functional component.
{% endhint %}
{% tabs %} {% tab title="TypeScript" %}
const withModal = <P extends ModalfyParams, Props extends object>(
Component: React.ComponentClass<Props>,
) => {
const { closeModal, closeModals, closeAllModals } = modalfy<P>()
class WithModalComponent extends React.Component<ModalProp<P, Props>> {
render() {
return (
<ModalContext.Consumer>
{(context) => (
<Component
modal={{
closeModal,
closeModals,
closeAllModals,
openModal: context.openModal,
currentModal: context.currentModal,
}}
/>
)}
</ModalContext.Consumer>
)
}
}
return WithModalComponent
}
{% endtab %} {% endtabs %}
{% embed url="https://github.com/colorfy-software/react-native-modalfy/blob/main/src/lib/withModal.tsx" %}
import React, { Component } from 'react'
import { Button, Text } from 'react-native'
import { withModal } from 'react-native-modalfy'
class ProfileScreen extends Component {
render() {
return (
<View>
<Text>Welcome!</Text>
<Button
title="Edit"
onPress={() => this.props.modal.openModal('EditProfile')}
/>
</View>
)
}
}
export default withModal(ProfileScreen)
Using withModal()
will give you access to:
this.props.modal
currentModal
: name of the currently displayed modal if there's oneopenModal
: open a specific modalcloseModal
: close a modalcloseModals
: close every instance of a given modalcloseAllModals
: close all open modals
as seen in ModalProp
.