Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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
Reactjs 我们可以在自定义函数中访问传递给组件的道具吗_Reactjs - Fatal编程技术网

Reactjs 我们可以在自定义函数中访问传递给组件的道具吗

Reactjs 我们可以在自定义函数中访问传递给组件的道具吗,reactjs,Reactjs,这听起来可能很傻,但我找不到这方面的指南 我要做的是在parent中更改名为update的变量 在父DOM中执行以下操作: <Child update={this.state.update} /> 在子级中,我不想在呈现和返回之间拾取它(使用const{update}=this.props)并且只能在DOM中使用它,而是想在构造函数和呈现之间的部分拾取它,并在那里的函数中使用它。React有一个在组件上调用的函数生命周期: 启动组件时,您可以使用componentDidMou

这听起来可能很傻,但我找不到这方面的指南

我要做的是在parent中更改名为
update
的变量

在父DOM中执行以下操作:

 <Child update={this.state.update} />


在子级中,我不想在呈现和返回之间拾取它(使用
const{update}=this.props
)并且只能在DOM中使用它,而是想在构造函数和呈现之间的部分拾取它,并在那里的函数中使用它。

React有一个在组件上调用的函数生命周期:

启动组件时,您可以使用
componentDidMount()

如果要根据道具更改更改状态,请使用:
componentWillReceiveProps()


否则,如果您希望该函数的结果用作视图中的数据(但只是被操纵)。然后生成一个单独的函数,也称为:computed函数的computed属性。(因为结果是基于当前状态/道具计算的)。React将确保您不会重新渲染/计算不必要的内容。

您可以在组件中的任何位置访问组件的
道具,无论是
构造函数、生命周期函数、渲染还是自定义函数。

您需要知道的唯一一件事是,
构造函数、生命周期方法和渲染函数
已经将
绑定到React组件的上下文,但是对于
自定义函数
,您需要自己添加绑定。绑定可以在
构造函数中完成,也可以通过将函数声明为
箭头函数来完成

检查以下关于为什么需要绑定自定义函数的答案:

为了你的案子

<Child update={this.state.update} />

我试图在
组件中使用它,当我尝试控制台时,它将接收道具(NewProps)
。从
NewProps.update
props.update
未捕获(承诺中)记录它TypeError:无法读取未定义的
的属性“update”这是什么。状态
的构造函数中执行什么操作?无论如何,我必须确保从声明中排除另一个函数,这就是为什么如果构造函数只执行调用
超级
,您可以完全删除该构造函数的原因。我正在尝试在中使用它
component将在我尝试控制台时接收props(NewProps)
NewProps.update
props.update
@tatsu的属性“update”这很奇怪,我想知道你的代码是什么样子。这是不正常的。当然,你也应该使用
this.props.update
,因为我也尝试从newProps实例化一个函数,尽管它不是从那里来的。
class Child extends React.Component {
    componentDidMount() {
        const {update} = this.update || {};
        console.log(update);
        this.somefunc();
    }
    somefunc = () = {
       const {update} = this.update || {};   //After function is binded, you can do the same thing here too
        console.log(update);
    }
}