React的PropTypes的string类型没有定义

问题前提:
react组件在头上引入了import React, {PropTypes} from ‘react’;
但是在下边进行属性检查的时候提示没有string这个属性。
为这问题折腾了很久,记录一下。原来是React版本的差异,造成前后一些不兼容的地方

1.问题代码

import classNames from 'classnames';
import React, {PropTypes} from 'react';

// 无状态函数式组件
function Button(props) {
  const cssclasses = classNames('Button', props.className); 

   return props.href
        ? <a {...props} className={cssclasses} />
      : <button {...props} className={cssclasses} />;
}

console.log(PropTypes);

Button.propTypes = {
 href: PropTypes.string,
};

2. 错误原因分析

坑人的地方
这里写图片描述
原来人React从V15.5版本就不支持PorpTypes属性了,改到了prop-types里
检查自己的react版本
查看自己工程的node_modules里的react包,查看package.json,发现版本是V16.3.1
"_id": "react@16.3.1"

怪不得老是提示没有string属性。

3. 解决方案

按照官方解决办法:
1)下载prop-types包
npm install --save-dev prop-types
2)修改代码如下

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

// 无状态函数式组件
function Button(props) {
  const cssclasses = classNames('Button', props.className); //  将Button.css中定义的Button样式,无论如何都要给Button组件加上。这一句的意思是拼接class里的多个样式


  return props.href
    ? <a {...props} className={cssclasses} />
  : <button {...props} className={cssclasses} />;
}

console.log(PropTypes);

Button.propTypes = {
  href: PropTypes.string,
};

在运行就正常了

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值