从reactjs中的父组件调用并将参数传递给子组件的函数

Posted

技术标签:

【中文标题】从reactjs中的父组件调用并将参数传递给子组件的函数【英文标题】:calling and pass arguments to children component's function from parent component in reactjs 【发布时间】:2017-03-28 05:22:29 【问题描述】:

我发现我通过 refs 从父组件传递到子组件的参数要么是未定义的,要么是实际事件,而不是我传入的。

真正将参数从父组件传递到子组件函数的正确方法是什么?我正在使用refs,但在函数参数方面似乎并没有真正传递任何东西。

我在这里展示这个案例: https://codepen.io/adamchenwei/pen/gLMaPo/?editors=0010

基本上,如果您看到我写console.log('child argument should be string'); 的那一行,那应该是实际传递的参数而不是事件。

不知道是不是我做错了。

对于这种情况,我需要评估父组件中的事件并决定如何运行子函数,并相应地传入特定参数。

【问题讨论】:

【参考方案1】:

只有两种方法可以访问子组件中的父 props。您可以通过以下两种方式实现:-

    通过 props 将值从父组件传递到子组件 在状态中设置值并从子级调度操作以从状态中获取值。

【讨论】:

【参考方案2】:

我会使用 state 和 props,而不是使用 ref:

parentDoThing(event) 
    const lifeTerms = 
      heaven: 'yeeeeey',
      hell: 'nooooooo',
    
    if(event) 
      this.setState( lifeTerms: heaven );
     else 
      this.setState( lifeTerms: hell);
    


render()     
    return (
      <section className="parent-comp"
        onClick=this.parentDoThings>
        <ChildComponent
          lifeTerms=this.state.lifeTerms/>
        <h1> Whats in App this.state.text</h1>
      </section>
);

在子组件上:

render()     
    return (
      <section className="child">
        <section>this life is this.state.life </section>
        <button onClick=this.doChildThings.bind(this, this.props.lifeTerms)> Button </button>
      </section>
    );

【讨论】:

【参考方案3】:

通过使用componentWillUpdate 结合使用父级别state 作为props 传递给子级来触发子级内部的事件,解决了我的问题,因为我不希望子级内部的任何触发器触发由父母。

【讨论】:

以上是关于从reactjs中的父组件调用并将参数传递给子组件的函数的主要内容,如果未能解决你的问题,请参考以下文章

从reactjs中的父组件调用子组件方法

如何将子函数的参数传递给父 reactjs

使用 useRef 从 Reactjs 中的父级调用子函数

如何将参数传递给 JSP 组件?

将 onclick 函数作为参数传递给 react/typescript 中的另一个组件

从 API 获取数据并将获取的数据作为参数传递给其他 API 以获取有关数据?