TypeError:_this2.props.someFunciton不是函数-反应

时间:2018-09-17 16:41:06

标签: reactjs typeerror react-props

尽管有标题相似的帖子,但它们都不相关或没有回答所发布的问题。

我在另一个页面中有一个这样的组件:

<SomeComponent  aParticularProp={(arg) => {this.someFunction(arg)}} />

这是SomeComponent的简化版本:

 class SomeComponent extends React.Component{

constructor(props){
    super(props);
    this.state = {someState: "test"};
}

something(){
  return (
      <SpecialButton 
          onClick={() => {this.props.someFunction(this.state.someState)}}
      />
  )

}

render () {
   return (
         {this.something()}
   ); 
}

}

我为什么会收到“ TypeError:_this2.props.someFunciton不是函数”?

2 个答案:

答案 0 :(得分:0)

您正在传递aParticularProp作为道具,而不是SomeFunction ... 因此,在SomeComponent中,您可以引用this.props.aParticularProp。

父组件中的this.someFunction应该在父组件中定义。

答案 1 :(得分:0)

如果您尝试将功能从父级组件传递到子组件并维护原始上下文,则可以通过以下两种方法将其绑定到该组件:

<SomeComponent someFunction={this.someFunction.bind(this)} />

OR ,方法如下:someFunction = args => {}

更何况this2.props.someFunction is not a function,通过像这样someFunction={(arg) => {this.someFunction(arg)}}向下传递函数,您实际上并没有将函数传递给子组件,而是调用了函数并返回结果。