71 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			71 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Props
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								## React Native - Props
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The term props, short for 'properties', means some type of data that is passed from one component into another. Props always flow downward from the parent component to the child.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								In React, the child component has access to the information from a parent via props:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```jsx
							 | 
						||
| 
								 | 
							
								// the child Header component receives the text prop and can access it via this.props.text
							 | 
						||
| 
								 | 
							
								class Header extends Component {
							 | 
						||
| 
								 | 
							
								  render () {
							 | 
						||
| 
								 | 
							
								    return (
							 | 
						||
| 
								 | 
							
								      <Text>{this.props.text}</Text>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class App extends Component {
							 | 
						||
| 
								 | 
							
								  render () {
							 | 
						||
| 
								 | 
							
								    return (
							 | 
						||
| 
								 | 
							
								      <Header text="Welcome!" />
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This also works the same way in functional components:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```jsx
							 | 
						||
| 
								 | 
							
								// in functional components, props will be received as a parameter 'props'
							 | 
						||
| 
								 | 
							
								const Header = (props) => {
							 | 
						||
| 
								 | 
							
								  return (
							 | 
						||
| 
								 | 
							
								    <Text>{props.title}</Text>
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class App extends Component {
							 | 
						||
| 
								 | 
							
								  render () {
							 | 
						||
| 
								 | 
							
								    return (
							 | 
						||
| 
								 | 
							
								      <View>
							 | 
						||
| 
								 | 
							
									<Header text="Welcome!" />
							 | 
						||
| 
								 | 
							
								      </View>
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Other libraries you import will also give you access to additional properties inside your components. Here is an example from the [react-native-elements](https://github.com/react-native-training/react-native-elements) library.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```jsx
							 | 
						||
| 
								 | 
							
								import { Button } from 'react-native-elements';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// here 'buttonStyle' and 'title' are props passed into the Button component
							 | 
						||
| 
								 | 
							
								class App extends Component {
							 | 
						||
| 
								 | 
							
								  render () {
							 | 
						||
| 
								 | 
							
								    return (
							 | 
						||
| 
								 | 
							
								      <Button
							 | 
						||
| 
								 | 
							
									buttonStyle={{backgroundColor: 'red', borderRadius: 10}}
							 | 
						||
| 
								 | 
							
									title={`Submit`}
							 | 
						||
| 
								 | 
							
								      />
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 |