当前位置: 首页 > 面试题库 >

通过reactjs上的props传递带有参数的函数

平羽
2023-03-14
问题内容

我有一个功能,它从父级一直到组件层次结构中子级的子级。通常,这不会有太大的问题,但是我需要从孩子那里接收一个参数。我目前收到此错误消息:

Uncaught (in promise) TypeError: this.props.myFunction is not a function.

这是我正在做的示例代码:

class SomeComponent extends Component{

    constructor(props){
        super(props);
        //does whatever stuff        
        this.myFunction = this.myFunction.bind(this);

    }

    //(only applicable to raw and normal forms)
    myFunction(param){
        console.log('do something: ', param);
    }

    render(){
     return (<div><ChildComponent1 myFunction={()=>this.myFunction()}/></div>)
    }
}

class ChildComponent1{
      render(){
  return (<div><ChildComponent2 myFunction={()=>this.props.myFunction()}/></div>)
    }
}

class ChildComponent2{
      render(){
  return (<Button onClick={()=>this.props.myFunction(param)}>SomeButton</Button>)
    }
}

总结一下:我一直将myFunction作为道具传递SomeComponentChildComponent2,每次单击按钮并从中传递参数时,我都希望将其调用ChildComponent2

谢谢!


问题答案:

我不明白你为什么会得到这个错误,但你应该做的myFunction={this.myFunction}myFunction={this.props.myFunction}

class SomeComponent extends Component{

    constructor(props){
        super(props);
        //does whatever stuff        
        this.myFunction = this.myFunction.bind(this);

    }

    //(only applicable to raw and normal forms)
    myFunction(param){
        console.log('do something: ', param);
    }

    render(){
     return (<div><ChildComponent1 myFunction={this.myFunction}/></div>)
    }
}

class ChildComponent1{
      render(){
  return (<div><ChildComponent2 myFunction={this.props.myFunction}/></div>)
    }
}

class ChildComponent2{
      render(){
  return (<Button onClick={()=>this.props.myFunction(param)}>SomeButton</Button>)
    }
}

Wrapping the function call inside another (arrow) function is just unnecessary
and won’t forward the parameter properly (since all your intermediate arrow
functions do not accept a parameter).



 类似资料:
  • 将函数传递给另一个函数的Scala示例缺少传递的函数(时间段)接受参数(x)的情况。 我怎样才能使上述代码工作? 编辑:我在oncepersecond中添加了一个x,以明确目标是传递整数。

  • 问题内容: 是否可以通过以参数作为参数的javascript函数? 例: 问题答案: 使用“关闭”: 这将创建一个匿名的临时函数包装器,该包装器知道该参数并将其传递给实际的回调实现。

  • 问题内容: 我正在使用PhantomJS page.evaluate()进行抓取。我的问题是我传递到Webkit页面的代码是沙盒化的,因此无法访问我的主要幻象脚本的变量。这使得很难使抓取代码通用。 如何将参数推入页面? 问题答案: 我遇到了确切的问题。可以使用一些技巧,因为它也可以接受字符串。 有几种方法可以执行此操作,但是我使用了一个称为的包装器,该包装器接受其他参数以传递给必须在Webkit端

  • 我有下面的<代码> 有些值非常大,最高可达6位。我想编写一个Javascript函数,它将接受子字符串并仅显示前3位数字。 如何编写函数并将参数作为值传递: 我可以用PHP实现,但是我需要用javascript。

  • 问题内容: 我正在尝试使用杰克逊对物体进行去电 我有这个例外: 我知道这正在发生,因为这是我的构造函数: 因此,我的构造函数接收到HttpResponse参数,但我没有传递它,但我不知道该怎么做。我不能用一个空的构造函数过度计费,因为我需要以这种方式接收HttpResponse对象。当我调用readValue()方法时,有什么方法可以传递此构造函数参数?或者在这种情况下最好的选择是什么?我感谢您的

  • 让我们假设下面的方法(从番石榴的Iterables说): 这个系列: 然后编译以下代码并正确导出泛型 (在Guava中,这将返回< code>objs中所有字符串的iterable。) 但是现在让我们假设以下类: 我不知道如何调用并获取