【问题标题】:React.PropTypes is deprecated since React 15.5.0React.PropTypes 自 React 15.5.0 起已弃用
【发布时间】:2026-01-14 00:45:01
【问题描述】:

我正面临一个问题,我试图导入一个静态组件并在父组件中使用它。我收到 React 未定义错误。

这是我所做的 父组件

import React from 'react';
import TableHeader from 'TableHeader';
import TableRow from 'TableRow';
import UTIL from '../../services/Utils';

export default class Table extends React.Component {

    render() {
        return (<div>
            <TableHeader labels={this.props.labels}/>
            <div className="table-body js-filtered-data-wrapper sortable">
                {this.renderTableRows()}
            </div>

        </div>
        )
    }
    renderTableRows() {
        return this.props.teamlist.map((listItem, i) => {
            return (
                <TableRow key={i}
                               data={listItem}
                               labels={this.props.labels}
                />
            )
        });
    }
}

在我的 TableHeader 文件中,代码是

import { PropTypes } from 'react';

const TableHeader = (props) => {
    let labels = props.labels;
    return (
        <ul className="table-header">
            <li className="table-row header ">
                <div className="player-name">{labels.playername}</div>
            </li>
        </ul>
    )
}

TableHeader.propTypes = {
    labels : PropTypes.object.isRequired
}

export default TableHeader;

我得到的错误是

Uncaught ReferenceError: React is not defined
    at TableHeader (webpack:///./src/components/pro-am/TableHeader.jsx?:13)

【问题讨论】:

标签: reactjs jsx


【解决方案1】:

Imoprt React 也在 TableHeader 组件中:

注意:在最新版本的React 中,PropTypes 已被移动 到一个单独的包(prop-types)。所以从那里导入它就像

import React,{ PropTypes } from 'react';

const TableHeader = (props) => {
    let labels = props.labels;
    return (
        <ul className="table-header">
            <li className="table-row header ">
                <div className="player-name">{labels.playername}</div>
            </li>
        </ul>
    )
}

TableHeader.propTypes = {
    labels : PropTypes.object.isRequired
}

export default TableHeader;

如果使用 v15.5.0 或更高版本,请使用单独包中的 PropTypes

import React from 'react';
import PropTypes from 'prop-types';

const TableHeader = (props) => {
    let labels = props.labels;
    return (
        <ul className="table-header">
            <li className="table-row header ">
                <div className="player-name">{labels.playername}</div>
            </li>
        </ul>
    )
}

TableHeader.propTypes = {
    labels : PropTypes.object.isRequired
}

export default TableHeader;

【讨论】:

  • 这将无济于事,因为这将产生此错误'无法读取未定义的属性'createElement'
  • 我会帮忙的,试试看
  • 我没有使用最新版本,所以没关系。我猜
  • 是的,没关系,只是将其添加为注释
  • 很高兴有帮助,但是我同意你的观点,有时 React 会给出不太有用的警告
最近更新 更多