有没有办法不将任何东西传递给子道具方法?

时间:2019-05-30 09:38:07

标签: javascript reactjs

错误:TypeError:_this.props.handleChange不是函数

我有一个React组件,该组件具有另一个视图组件中使用的prop方法。

问题是我的其他视图组件需要使用我的Child组件,但是由于使用prop方法是必需的,因此会导致错误。

class NeedsPropMethod extends Component {
 handleChange = value => {
  // receives the value
 }

 return (
  <Child toy="car" color="blue" handleChange={this.handleChange}>
 )
}

class DoesntNeedPropMethod extends Component {
 return (
  <Child toy="car" color="blue"}>
 )
}

class Child extends Component {
 return (
  this.props.toy; // "car"
  this.props.color; // "blue"
  this.props.handleChange(value) // I do not need this but it gives me the error above
 );
}

2 个答案:

答案 0 :(得分:0)

您可以像这样将propTypes添加到代码中,以使其成为可选

Child.propTypes = {
  handleChange: PropTypes.func
};

所以您的handleChange将是可选的

答案 1 :(得分:-1)

从吴彦祖的答案中

Child.propTypes = {
  handleChange: PropTypes.func
};

然后您只需检查是否使用了prop方法

if (this.props.handleChange) {
 // do stuff here
}