📜  React Native 中的 props 是什么?

📅  最后修改于: 2022-05-13 01:56:48.525000             🧑  作者: Mango

React Native 中的 props 是什么?

道具用于为组件提供属性,使用这些属性可以修改和自定义它们。这些属性在创建组件时传递给组件。道具用于用户定义和默认组件中以扩展其功能。这些 props 是不可变的,并且在创建组件后无法更改。


    // Remaining application code



     // Remaining application code

组件的 props 值用大括号括起来,以便将表达式嵌入 JSX。

示例 1:默认组件中的道具:在此,我们将看到默认情况下我们可以使用的组件中道具的使用。

创建 React Native 应用程序:

  • 第 1 步:使用以下命令创建 React Native 应用程序:

    expo init PropsDefaultDemo
  • 第 2 步:创建项目文件夹后,即 PropsDefaultDemo 使用以下命令移动到该文件夹:

    cd PropsDefaultDemo

项目结构:它看起来像这样。

实现:App.js中写下如下代码,展示 Props 的功能。在这里,我们将展示几个视图,每个视图都有不同的属性。

App.js
import { StatusBar } from 'expo-status-bar';
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
  
// Exporting default component
export default function App() {
  return (
    
      
      
      
      
    
  );
}
  
// Creating styles
const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
  style1:{
    backgroundColor: "red",
    height: 100,
    width: 200
  },
  style2:{
    backgroundColor: "green",
    height: 50,
    width: 50
  },
  style3:{
    backgroundColor: "blue",
    height: 100,
    width: 100
  }
});


ImageFill.js
import { View, Image, StyleSheet, ScrollView } from 'react-native';
import React from 'react';
  
function ImageFill(props) {
    return (
        
            {[...Array(props.count)].map(
        () => (
          
        )
      )}
        
    );
}
  
// Creating styles
const styles = StyleSheet.create({
    contStyle:{
        flex:1,
        alignItems: 'center',
        justifyContent: 'center',
        width: "100%"  
    }
});
  
// Exporting ImageFill Component
export default ImageFill;


App.js
import { StatusBar } from 'expo-status-bar';
import React from 'react';
import { StyleSheet, Text, View, ScrollView } from 'react-native';
import ImageFill from './ImageFill';
  
// Exporting default component
export default function App() {
  return (
    
      
    
  );
}
  
// Creating styles
const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    flexDirection: 'column',
    flexWrap: 'wrap',
  },
});


运行应用程序的步骤:使用以下命令运行服务器。

npm start

输出:

示例 2:用户组件中的道具在本节中,我们将看到道具在用户定义的组件中的使用。

创建 React Native 应用程序:

  • 第 1 步:使用以下命令创建 React Native 应用程序:

    expo init PropsUserDemo
  • 第 2 步:创建项目文件夹后,即 PropsUserDemo 使用以下命令移动到该文件夹:

    cd PropsUserDemo

项目结构:它看起来像这样。

实现:创建一个名为ImageFill.js的新组件文件,它将在名为 count 的 prop 中显示指定为 prop 的图像指定次数。

ImageFill.js

import { View, Image, StyleSheet, ScrollView } from 'react-native';
import React from 'react';
  
function ImageFill(props) {
    return (
        
            {[...Array(props.count)].map(
        () => (
          
        )
      )}
        
    );
}
  
// Creating styles
const styles = StyleSheet.create({
    contStyle:{
        flex:1,
        alignItems: 'center',
        justifyContent: 'center',
        width: "100%"  
    }
});
  
// Exporting ImageFill Component
export default ImageFill;

应用程序.js

import { StatusBar } from 'expo-status-bar';
import React from 'react';
import { StyleSheet, Text, View, ScrollView } from 'react-native';
import ImageFill from './ImageFill';
  
// Exporting default component
export default function App() {
  return (
    
      
    
  );
}
  
// Creating styles
const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    flexDirection: 'column',
    flexWrap: 'wrap',
  },
});

运行应用程序的步骤:使用以下命令运行服务器。

npm start

输出: