React propType 无法读取未定义的属性

IT技术 reactjs
2021-04-24 20:30:34

使用 propTypes 验证 props 会出现以下错误:

类型错误:无法读取未定义的属性“字符串”。

类型错误:无法读取未定义的属性“func”。

有问题的代码位于代码段的底部:

import React from 'react';
import ProjectItem from './ProjectItem';

class Projects extends React.Component {
    
    deleteProject(title) {
      this.props.onDelete(title);
    }

    render() { 
      let projectItems;

      if (this.props.project) {
        projectItems = this.props.project.map(project => {
            return (
                <ProjectItem key={project.title} project={project} onDelete={this.deleteProject.bind(this)}  />
            )
        });
      }
    
      return (
        <div className="Projects">
          {projectItems}
        </div>    
      );    
    }

}

Projects.propTypes = {
  projects: React.PropTypes.string,
  onDelete: React.PropTypes.func
}
2个回答

需要安装prop-types包,然后添加import语句

import PropTypes from prop-types;

在你的class中名列前茅。

PropTypes 已从 React 移动到它们自己的 package prop-types

编辑:如评论中所述,这仅适用于 React 15.5 及更高版本。

正如 palsrealm 提到的,你需要添加 prop-types 包,然后在 Proptypes 之前删除 React。以下应该工作:

Projects.propTypes = {
   projects: PropTypes.string,
   onDelete: PropTypes.func
}