react-native-pager-view-navigator
Version:
**react-native-pager-view-navigator** provides custom React hooks to manage navigation in [react-native-pager-view](https://github.com/callstack/react-native-pager-view). The package offers two hooks for pager initialization and navigation management.
146 lines (107 loc) • 3.93 kB
Markdown
# react-native-pager-view-navigator
**react-native-pager-view-navigator** provides custom React hooks to manage navigation in [react-native-pager-view](https://github.com/callstack/react-native-pager-view). The package offers two hooks for pager initialization and navigation management.
## Installation
Install the package along with its peer dependencies:
```bash
npm install react-native-pager-view-navigator react-native-pager-view react-navigation-backhandler
```
## Usage
Here's an example of how to use the hooks to navigate between pages and handle navigation events.
### Example Code
```jsx
import React, { useRef } from 'react';
import { View, Text, Button, StyleSheet } from 'react-native';
import PagerView from 'react-native-pager-view';
import {
useInitializePagerNavigation,
usePagerNavigationMethods,
} from 'react-native-pager-view-navigator';
const App = () => {
const pagerRef = useRef(null);
// Initialize pager navigation
const initialized = useInitializePagerNavigation(pagerRef, 0);
// Access pager navigation methods
const { navigate, goBack } = usePagerNavigationMethods(pagerRef);
if (!initialized) {
return null; // Show a loading indicator or fallback UI if initialization fails
}
return (
<View style={styles.container}>
<PagerView ref={pagerRef} style={styles.pagerView} initialPage={0}>
<View key="1" style={styles.page}>
<Text style={styles.text}>Page 1</Text>
</View>
<View key="2" style={styles.page}>
<Text style={styles.text}>Page 2</Text>
</View>
<View key="3" style={styles.page}>
<Text style={styles.text}>Page 3</Text>
</View>
</PagerView>
<View style={styles.buttonContainer}>
<Button title="Go to Next Page" onPress={() => navigate(1)} />
<Button title="Go Back" onPress={goBack} />
</View>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
},
pagerView: {
flex: 1,
},
page: {
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#f5f5f5',
},
text: {
fontSize: 18,
fontWeight: 'bold',
},
buttonContainer: {
flexDirection: 'row',
justifyContent: 'space-around',
margin: 16,
},
});
export default App;
```
### Explanation
1. **Initialization**:
const initialized = useInitializePagerNavigation(pagerRef, 0);
Ensures that the pager is initialized correctly with the starting page.
2. **Navigation Methods**:
const { navigate, goBack } = usePagerNavigationMethods(pagerRef);
Provides methods for navigating to a specific page (`navigate`) and going back to the previous page (`goBack`).
3. **Buttons for Navigation**:
- "Go to Next Page" navigates to the second page.
- "Go Back" navigates back to the previous page in the stack.
## API
### useInitializePagerNavigation(pagerRef, initialPage)
Initializes the pager navigation.
#### Parameters:
- pagerRef (Object): A React ref object created using useRef().
- initialPage (number): The index of the initial page.
#### Returns:
- true if initialization succeeds, otherwise false.
### usePagerNavigationMethods(pagerRef, initialPage)
Provides methods to manage navigation.
#### Parameters:
- pagerRef (Object): A React ref object for the PagerView.
- initialPage (number): The index of the initial page.
#### Returns:
- navigate(pageIndex): Navigates to the specified page index.
- goBack(): Goes back to the previous page.
- reset(pageIndex): Resets the navigation stack and sets the current page.
- onPageSelected(event): Handles page selection events (useful for callbacks).
## License
This project is licensed under the ISC License and code prepared by Switcherfaiz.