📜  反应JS |道具 - 设置 1

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

反应JS |道具 - 设置 1

我们已经在我们之前关于 ReactJS 的文章中讨论过组件和它的类型 |组件。到目前为止,我们只使用静态数据处理组件。在本文中,我们将了解如何将信息传递给组件。
React 允许我们使用称为props (代表属性)的东西将信息传递给组件。道具基本上是一种全局变量或对象。我们将在本文中详细了解这些内容。

传递和访问道具

当我们为任何 HTML 标签声明属性时,我们可以将 props 传递给任何组件。看看下面的代码片段:

在上面的代码片段中,我们将一个名为samplePropprop传递给名为DemoComponent的组件。该道具的值为“HelloProp”。现在让我们看看如何访问这些道具。
我们可以从 props 传递到的组件的类中访问任何内部的 props。可以访问props,如下所示:

this.props.propName;

我们可以使用上述语法从组件的类中访问任何道具。 “this.props”是一种存储所有组件道具的全局对象。 propName ,即 props 的名称是该对象的键。
下面是一个示例程序,用于说明如何从组件传递和访问 props:

打开你的 react 项目并编辑 src 文件夹中的App.js文件:

src App.js:

javascript
import React from 'react';
import ReactDOM from 'react-dom';
 
// sample component to illustrate props
class DemoComponent extends React.Component{
    render(){
        return(
 
                
                    {/*accessing information from props */}                     

Hello {this.props.user}

                    

Welcome to GeeksforGeeks

                
            );     } }   ReactDOM.render(     // passing props     ,     document.getElementById("root") );


javascript
import React from 'react';
import ReactDOM from 'react-dom';
 
// functional component to illustrate props
function DemoComponent(props){
    return(
        
            {/*accessing information from props */}             

Hello {props.user}

            

Welcome to GeeksforGeeks

         
    ); }   ReactDOM.render(     // passing props     ,     document.getElementById("root") );


javascript
import React from 'react';
import ReactDOM from 'react-dom';
 
// Parent Component
class Parent extends React.Component{
    render(){
        return(
                
                    

You are inside Parent Component

                                     
            );     } }   // Child Component class Child extends React.Component{     render(){         return(                 
                    

Hello, {this.props.name}

                    

You are inside Child Component

                    

Your user id is: {this.props.userId}

                
            );     } }   ReactDOM.render(     // passing props     ,     document.getElementById("root") );


javascript
import React from 'react';
import ReactDOM from 'react-dom';
 
// Parent Component
class Parent extends React.Component{
    render(){
        return(
                
                    

You are inside Parent Component

                                     
            );     } }   // Child Component class Child extends React.Component{     render(){         console.log(this.props);         return(                 
                    

Hello, {this.props.name}

                    

You are inside Child Component

                    

Your user id is: {this.props.userId}

                
            );     } }   ReactDOM.render(     // passing props     ,     document.getElementById("root") );


输出:

在上面的示例中,我们使用了基于类的组件来说明 props。但是我们也可以像在上面的示例中那样将 props 传递给基于函数的组件。但是要从函数中访问道具,我们不再需要使用 'this' 关键字。功能组件接受 props 作为参数,可以直接访问。下面是与上面相同的示例,但这次使用基于函数的组件而不是基于类的组件。

打开你的 react 项目并编辑 src 文件夹中的App.js文件:

src App.js:

javascript

import React from 'react';
import ReactDOM from 'react-dom';
 
// functional component to illustrate props
function DemoComponent(props){
    return(
        
            {/*accessing information from props */}             

Hello {props.user}

            

Welcome to GeeksforGeeks

         
    ); }   ReactDOM.render(     // passing props     ,     document.getElementById("root") );

该程序的输出将与上述程序的输出相同。唯一的区别是我们使用了基于函数的组件而不是基于类的组件。

将信息从一个组件传递到另一个组件

这是 React 最酷的特性之一。我们可以让组件在它们之间进行交互。我们将考虑两个组件 Parent 和 Children 来解释这一点。我们会将一些信息作为 props 从 Parent 组件传递给 Child 组件。我们可以将任意数量的 props 传递给组件
看下面的代码:
打开你的 react 项目并编辑 src 文件夹中的App.js文件:

src App.js:

javascript

import React from 'react';
import ReactDOM from 'react-dom';
 
// Parent Component
class Parent extends React.Component{
    render(){
        return(
                
                    

You are inside Parent Component

                                     
            );     } }   // Child Component class Child extends React.Component{     render(){         return(                 
                    

Hello, {this.props.name}

                    

You are inside Child Component

                    

Your user id is: {this.props.userId}

                
            );     } }   ReactDOM.render(     // passing props     ,     document.getElementById("root") );

输出:

所以我们已经看到了 React 中的 props,也了解了如何使用 props,如何将它们传递给组件,如何在组件内部访问它们等等。在这个完整的场景中,我们经常使用“this.props.propName”这个东西来访问道具。现在让我们检查其中实际存储的内容。我们将 console.log “this.props” 在上面的子组件中的程序中,并尝试观察记录到控制台的内容。下面是修改后的带有 console.log() 语句的程序:

打开你的 react 项目并编辑 src 文件夹中的App.js文件:

src App.js:

javascript

import React from 'react';
import ReactDOM from 'react-dom';
 
// Parent Component
class Parent extends React.Component{
    render(){
        return(
                
                    

You are inside Parent Component

                                     
            );     } }   // Child Component class Child extends React.Component{     render(){         console.log(this.props);         return(                 
                    

Hello, {this.props.name}

                    

You are inside Child Component

                    

Your user id is: {this.props.userId}

                
            );     } }   ReactDOM.render(     // passing props     ,     document.getElementById("root") );

您可以在上图中清楚地看到,在控制台中显示this.props是一个对象,它包含传递给子组件的所有道具。子组件的 props 名称是该对象的键,它们的值是这些键的值。因此,现在很清楚,使用 props 传递到组件的任何信息都存储在对象中。
注意:道具是只读的。我们不允许修改道具的内容。无论 Component 的类型是什么——函数式的还是基于类的,都不允许修改它们的 props。我们将在下一篇文章 Reactjs | 中详细了解这一点。道具组-2

参考
https://reactjs.org/docs/components-and-props.html