使用 propTypes 进行 React 解构

React Destructuring with propTypes

我在尝试使用 propTypes 进行验证时遇到了一些问题:

class MediaBrowse extends React.Component {
  render() {
    const { name, age, array } = this.props.data;
    return (<div></div>)
  }
}

我将 propTypes 验证为:

MediaBrowse.PropTypes = {
  name: PropTypes.string,
  age: PropTypes.number,
  array: PropTypes.array
};

但是它说当我 运行 eslint 验证时 data.name 在 props 验证中缺失。 所有人都一样..

从父组件我传递了类似的数据 谁能帮忙解决这个问题?

import PropTypes from 'prop-types'

MediaBrowse.propTypes ={
      data: PropTypes.shape({
        name: PropTypes.string,
        age: PropTypes.number,
        array: PropTypes.array,
     })
    }
const { name, age, array} = this.props.data

您没有在任何地方定义 props.data,所以它是 undefined

MediaBrowse.PropTypes改为MediaBrowse.propTypes(小写"p"):

MediaBrowse.propTypes = {
  name: PropTypes.string,
  age: PropTypes.number,
  array: PropTypes.array,
}

当您定义道具时,它们可以在 props 对象中访问,如下所示:

const { name, age, array } = this.props

更新:

您的函数可以用 propTypes 定义,如下所示:

MediaBrowse.propTypes = {
  // add this to your existing propTypes
  onSearchText: PropTypes.func,
}

如果你想定义一个默认函数,你可以这样定义它:

MediaBrowse.defaultProps = {
  // define the params and return type of your function here
  // I have just used this as an example
  onSearchText: () => void
}