Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在react组件类中,其中;道具;正在从中拉出的对象?_Javascript_Reactjs_Jsx - Fatal编程技术网

Javascript 在react组件类中,其中;道具;正在从中拉出的对象?

Javascript 在react组件类中,其中;道具;正在从中拉出的对象?,javascript,reactjs,jsx,Javascript,Reactjs,Jsx,直截了当地说,在基于react类的组件中,prop对象来自哪里 我正在学习官方的React-tic-tac-toe游戏教程 首先,当我查看react组件类的代码时(我们在创建react组件时对其进行了扩展),我注意到该函数有3个参数组件(props、context、updater),但我不明白为什么在只调用super()的情况下,props像super>一样被传递(道具)。 不应该为上下文和更新程序传递值吗?为什么在没有调用super的情况下运行代码时没有错误 import React, { C

直截了当地说,在基于react类的组件中,
prop
对象来自哪里

我正在学习官方的React-tic-tac-toe游戏教程

首先,当我查看react
组件
类的代码时(我们在创建react组件时对其进行了扩展),我注意到该函数有3个参数
组件(props、context、updater)
,但我不明白为什么在只调用super()的情况下,props像
super>一样被传递(道具)
。 不应该为
上下文
更新程序
传递值吗?为什么在没有调用
super
的情况下运行代码时没有错误

import React, { Component } from "react";

export class Square extends Component
{
    render()
    {
        return (
            <span>
                <button className="square" onClick={ () => { alert("click") } }>
                    {this.props.value}
                </button>
            </span>
        )
    }
}
import React,{Component}来自“React”;
导出类Square扩展组件
{
render()
{
返回(
{alert(“click”)}>
{this.props.value}
)
}
}

我明白,
{this.props.value}
中的
value
属性来自传递给
Square
的属性,该属性是另一个组件中的子组件(
在React教程中为Board
)但这不是我所指的。

道具是从超类传递到使用React中的
扩展组件创建的类的属性

类似于OOPS中父类属性传递给构造函数中的子类的情况。类似于在React中传递PROP的方式,这也适用于功能组件

注意-请不要将其与OOPS概念混淆[仅给出一个示例] 简化版]


有一件事是必需的:父类(即
组件
类)构造函数必须在任何React类组件中调用

super
所做的(在
Square
构造函数中)是使用
Square
道具
调用
组件的构造函数(希望不要太复杂)

  • 如果
    Square
    有一个
    构造函数
    ,那么应该隐式调用
    super

  • 如果
    Square
    没有构造函数,则在使用
    时将自动调用
    组件的构造函数


  • 此外,您也不直接在组件中使用
    上下文
    更新程序
    。因此不需要在组件中定义它们。

    但是调用
    超级()
    在代码可以无错误运行之前?为什么它在没有调用
    super
    的情况下运行?这就是我提到它的原因,它是概念的过度简化。这是由react内部处理的,当我们扩展类时,它继承了父类的所有内容,并且道具是父类的一部分。这将给您一个非常好的解决方案关于为什么是超级(道具)的好主意