当前位置: 首页 > 知识库问答 >
问题:

如何调用父组件中的函数

任繁
2023-03-14

这里有一个问题,我在React.js应用程序中有一个FormControl组件,我在其中呈现了几种不同类型的其他组件。例如,在下面的代码中,您可以看到我呈现了一个CheckBoxWithLabel。你会注意到我传递了一个函数

onCheck={this.toggleCheckBox}

因此,在CheckBoxWithLabel组件(代码未显示)中,我可以使用onChange事件(react中复选框的内置事件)调用它

onChange={this.props.onCheck} //this code's in the CheckBoxWithLabel

因此,结果是,当单击复选框时,会调用父组件中的toggleCheckBox函数,但这仅适用于下面显示的第一个CheckBoxWithLabel,其他的(在第二个返回函数中动态创建的)无法选中,因此,不会调用toggleCheckBox函数。

那是为什么呢?

如果我没有尝试调用父组件上的函数,而是让这些组件用CheckBoxWithLabel组件中的函数进行响应,那么它们工作正常。只有在父级中设置函数时,复选框才会停止工作,并且不会调用toggleCheckBox函数。

 toggleCheckBox: function(){
   console.log('toggle');
 }
 render: function(){
        return (  

          <div>
          <CheckboxWithLabel labelOn="On" labelOff="Off" item='blah' onCheck={this.toggleCheckBox} />
          <ul>
            {
            this.props.formElements.map(function(item) {

            return <CheckboxWithLabel labelOn="On" labelOff="Off" item={item} onCheck={this.toggleCheckBox} />

            })
            }               
        </ul>
          </div>
          );
        }

共有1个答案

高迪
2023-03-14

map内部的函数需要绑定,以便它可以使用this的正确实例来检索函数:

render: function(){
  return (  
    <div>
      <CheckboxWithLabel labelOn="On" labelOff="Off" item='blah' onCheck={this.toggleCheckBox} />
      <ul>
      {
        this.props.formElements.map(function(item) {
          return <CheckboxWithLabel labelOn="On" labelOff="Off" item={item} onCheck={this.toggleCheckBox} />
        }.bind(this));
      }               
      </ul>
    </div>
  );
}
 类似资料:
  • 在Vue 2.0中,文档和其他文档清楚地表明,父母与孩子之间的沟通是通过道具进行的。 父母如何通过道具告诉孩子事情发生了? 我应该看一个叫事件的道具吗?这感觉不对,替代方案也不对(/是子元素到父元素的,中心模型是远程元素的)。 我有一个父容器,它需要告诉它的子容器,可以在API上执行某些操作。我需要能够触发函数。

  • 问题内容: 如果我有类似的东西 我想从我拥有的地方访问,该怎么办? 问题答案: 推荐用于16.3之前的React版本 如果无法避免,那么从React文档中提取的建议模式将是: 该 家长 转发绑定到一个功能道具 家长 。当呼叫作出反应的 儿童的 道具也将分配 孩子的 给 父母的 财产。 建议用于React> = 16.3 引用转发是一种选择加入功能,它使某些组件可以接收它们收到的引用,并将其进一步向

  • 在本教程中,他们将一个回调函数从父组件传递到子组件,并从子组件传递到子组件。我的问题是如何设置参数?我的猜测是,起点是在组件中调用。从那以后,我就不知道是如何进入的了。它是否存储在“on click方块板”中?

  • 我创建了一个日历应用程序,可以添加注释。为了实现添加注释的功能,我创建了一些父组件,它有自己的状态,然后传递给子组件。子组件应该在构造函数中接受来自执行的。但是,由于setState函数异步ChildComponent没有时间等待父母组件的道具。 如何设置ChildComponent的初始状态,等待父母组件的道具(换句话说,同步)? 父组件: ChildComponent:

  • 我需要在ReactJS中从父组件调用子组件方法。我试过使用裁判,但不能做到这一点。有没有人能提出任何解决方案。多谢了。