This is an Example to create a React Native Tree View using react-native-final-tree-view for Android and IOS devices. A Tree View is simple a hierarchical view which is used to show the parent-child relationship between the data. You can simply understand the Tree View using the following image. In the below image the yellow ball is the parent and green ones are the children of the yellow ball. Please remember tree structure has no child limit so green children can also have the child and there can be more child under them.
In this example, we will see how to create a TreeView in React Native. So let’s get started.
We are going to use TreeView
component from react-native-final-tree-view
library.
Import TreeView using
1 | import TreeView from 'react-native-final-tree-view'; |
To Show TreeView
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <TreeView data={state.data} renderNode={({ node, level, isExpanded, hasChildrenNodes }) => { return ( <View> <Text style={{ marginLeft: 25 * level, fontSize: 18, }}> {getIndicator(isExpanded, hasChildrenNodes)} {node.name} </Text> </View> ); }} /> |
For this example, we are going to use dummy data array to make a screen with 2 parents having multiple child hierarchy under them.
To Make a React Native App
Getting started with React Native will help you to know more about the way you can make a React Native project. We are going to use react-native init to make our React Native App. Assuming that you have node installed, you can use npm to install the react-native-cli
command line utility. Open the terminal and go to the workspace and run
npm install -g react-native-cli
Run the following commands to create a new React Native project
react-native init ProjectName
If you want to start a new project with a specific React Native version, you can use the --version argument:
react-native init ProjectName --version X.XX.X
react-native init ProjectName --version react-native@next
This will make a project structure with an index file named App.js in your project directory.
Installation of Dependency
To use TreeView
we need to install react-native-final-tree-view
dependency.
To install this open the terminal and jump into your project using
1 | cd ProjectName |
Run the following command to install
1 | npm install react-native-final-tree-view --save |
This command will copy all the dependency into your node_module directory.
–save is optional, it is just to update the react-native-final-tree-view dependency in your package.json file.
Now Open App.js in any code editor and replace the code with the following code.
App.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | /*Example of React Native Tree View*/ import React from 'react'; //import React import { Text, View } from 'react-native'; //import Basic React Native components import TreeView from 'react-native-final-tree-view'; //import library for the TreeView //Dummy data for the Tree View const state = { data: [ { id: 'Parent1', name: 'Parent1', children: [ { id: 'child1', name: 'child1', children: [ { id: 'child11', name: 'child11', children: [ { id: 'child111', name: 'child111', }, ], }, { id: 'child12', name: 'child12', }, ], }, ], }, { id: 'Parent2', name: 'Parent2', children: [ { id: 'child2', name: 'child2', children: [ { id: 'child21', name: 'child21', }, { id: 'child22', name: 'child22', }, ], }, ], }, ], }; function getIndicator(isExpanded, hasChildrenNodes) { if (!hasChildrenNodes) { return '*'; } else if (isExpanded) { return '-'; } else { return '+'; } } function App() { return ( <View style={{ flex: 1, marginTop: 30, backgroundColor: 'white', padding: 10, }}> <TreeView data={state.data} renderNode={({ node, level, isExpanded, hasChildrenNodes }) => { return ( <View> <Text style={{ marginLeft: 25 * level, fontSize: 18, }}> {getIndicator(isExpanded, hasChildrenNodes)} {node.name} </Text> </View> ); }} /> </View> ); } export default App; |
To Run the React Native App
Open the terminal again and jump into your project using.cd ProjectName
To run the project on an Android Virtual Device or on real debugging devicereact-native run-android
or on the iOS Simulator by runningreact-native run-ios
(macOS only).
Screenshots
This is how you can make a React Native Tree View for Android and IOS using react-native-final-tree-view. If you have any doubt or you want to share something about the topic you can comment below or contact us here. There will be more posts coming soon. Stay tuned!
Hope you liked it. 🙂
I am implimenting TreeView in React Native same like mentioned above, but I am getting error as below:
Invariant Violation: Element type is invalid: expected a string(for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your vomponent from the file it’s defined in, or you might have mixed up default and named imports.
Please help me to fix this error.
Hello Sumit,
Thanks for informing. Post has been updated for the same.
Hi
Is it possible to add style for Tree view. I tried in this example but not able to achieve properly. Please suggest.
you can see there is a style in the Text component which will help you to customize the style. if you still have no clue how to do it then can you please draw and send it to me on aboutreact11@gmail.com?