警告:道具类型失败:提供给 myComponent 的 `function` 类型的道具 `somecomponentfunction` 无效,预期为 `boolean`

Warning: Failed prop type: Invalid prop `somecomponentfunction` of type `function` supplied to `myComponent`, expected `boolean`

我正面临这个警告,我确定它与 PropTypes 有关

在我的父组件中 somecomponentfunction 并且它返回一个布尔值并将其传递给子组件

在现有组件中

  somecomponentfunction = () => {
    this.setState({ somecomponentfunction: false })
  }

并且像

一样传递给 childComponet
<myComponent somecomponentfunction={this.somecomponentfunction} />

在子组件中,我只是在 props 中得到相同的东西,并在 PropTypes 中检查相同的东西

myComponent.PropTypes={
 somecomponentfunction: PropTypes.bool,
}

你们能告诉我哪里出了问题吗

那是因为 PropTypes 不会执行您的函数并检查返回的结果是否为布尔值。它直接检查道具携带的类型。

所以somecomponentfunction不是一个布尔值,而是一个函数。如果你想得到那个函数的结果,你需要直接执行

somecomponentfunction={this.somecomponentfunction()}

或将 propType 控件更改为:

somecomponentfunction: PropTypes.func