前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >React中static defaultProps报错问题详解

React中static defaultProps报错问题详解

作者头像
李维亮
发布于 2021-07-09 02:47:29
发布于 2021-07-09 02:47:29
64900
代码可运行
举报
文章被收录于专栏:李维亮的博客李维亮的博客
运行总次数:0
代码可运行

在react中可以定义默认props,使用es5时,可以使用getDefaultProps:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var MyDemo = React.createClass({
  getDefaultProps: function() {
    return {
      name: 'demo'
    };
  },
  render: function() {
    return <h1>This is my {this.props.name}</h1>;
  }
});

ReactDOM.render(
  <MyDemo />,
  document.getElementById('demo')
);

es6中使用static defaultProps(报错,需要使用static的解决方案见下面):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyDemo extends React.Component{
  constructor(props){
    super(props);
  }
//如果babel设置为es6的转码方式,会报错,因为定义静态属性不属于es6,而在es7的草案中。ES6的class中只有静态方法,没有静态属性。
  static defaultProps = {
    name: 'demo'
  }

  render(){
    return <h1>This is my {this.props.name}</h1>
  }
}

es6定义默认props的正确方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyDemo extends React.Component {
  constructor(props) {
    super(props);
  }
  render() {
    return <h1>This is my {this.props.name}</h1>
  }
}
//由于是用ES6 class语法创建组件,其内部只允许定义方法,而不能定义属性,class的属性只能定义在class之外。所以defaultProps要写在组件外部。
MyDemo.defaultProps = {
  name: 'demo'
};

解决方案:

将babel设置为es7的转码方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Install babel
npm install babel-core babel-loader --save-dev

// For ES6/ES2015 support
npm install babel-preset-es2015 --save-dev

// If you want to use JSX
npm install babel-preset-react --save-dev

// If you want to use experimental ES7 features
npm install babel-preset-stage-0 --save-dev

在项目根目录配置.babelrc文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "presets": ["es2015", "stage-0"],
  "plugins": ["transform-runtime"]
}

如果使用webpack的话,如下配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
loaders:[
          {
            test: /\.js[x]?$/,
            exclude: /node_modules/,
            loader: 'babel-loader' ,
            query:{
              presets:['es2015','stage-0','react'],
              plugins:['transform-runtime']
            },
           }
          ]

加入stage-0后就能尝试es7语法了,static也能在class内部定义属性了~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
手把手教你全家桶之React(一)
前言 最近项目用到react,其实前年我就开始接触react,时光匆匆,一直没有时间整理下来(太懒啦)!如今再次用到,称工作间隙,对全家桶做一次总结,项目源码地址。废话不多说,上码。 创建一个文件目录
用户2145235
2018/05/18
9770
Babel 入门指南
Babel 入门指南 ​⚠️ 注意: Babel 可以与很多构建工具(如 Browserify、Grunt、Gulp 等)进行集成。由于本教程选择 Webpack ,所以只讲解与 Webpack
静默虚空
2018/01/05
1.6K0
react新手demo——TodoList
今天我们就使用 react 来实现一个简易版的 todolist ,我们可以使用这个 demo 进行 list 的增删改差,实际效果如上图所示。大家可以clone下来查看:react-todolist
庞小明
2020/02/18
1.1K0
react新手demo——TodoList
Babel6
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
1.1K0
从0到1搭建webpack2+vue2自定义模板详细教程
webpack2和vue2已经不是新鲜东西了,满大街的文章在讲解webpack和vue,但是很多内容写的不是很详细,对于很多个性化配置还是需要自己过一遍文档。Vue官方提供了多个vue-templates,基于vue-cli用的最多,不过对于很多人来说,vue-cli 的配置还是过于复杂,对于我们了解细节实现不是很好,所以想自己从零开始搭建一个模板工程,也顺便重新认识一下webpack和vue工程化。
青梅煮码
2023/03/02
4.9K0
webpack4 中的 React 全家桶配置指南,实战!
点赞再看,养成习惯本文 GitHub https://github.com/qq44924588... 上已经收录,更多往期高赞文章的分类,也整理了很多我的文档,和教程资料。欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。
前端小智@大迁世界
2022/06/15
2K0
webpack4 中的 React 全家桶配置指南,实战!
(15/24) 为webpack增加babel支持
Babel是什么? Babel是一个编译JavaScript的平台,它的强大之处表现在可以通过编译达到以下目的:
wfaceboss
2019/04/08
5920
(15/24) 为webpack增加babel支持
项目中如何使用babel6详解
由于浏览器的版本和兼容性问题,很多es6,es7的新的方法都不能使用,等到可以使用的时候,可能已经过去了很多年。Babel可以把es6,es7的新代码编译成兼容绝大多数的主流浏览器的代码。 本篇文章主要介绍在项目中如何安装配置和使用babel. 1.在项目下初始化 package.json $ npm init 2.在项目中安装babel $ npm install babel-cli --save-dev 3.安装babel插件 $ npm install babel-preset-xxxxxx --sa
用户1741436
2018/05/16
7730
laravel+react+webpack+babel+gulp的配置
laravel composer create-project laravel/laravel --prefer-dist npm npm install gulp webpack -g npm install react react-dom babel-loader babel-preset-es2015 babel-preset-react --save-dev webpack.config.js var path = require('path'); var config = { entry: pa
前朝楚水
2018/04/03
8360
React 搭建开发环境
本文记录了本人以及目前团队从无到有使用React的过程,我们将从webpack开始说起,一步一步展现React最基本的开发生态。在这里并不会介绍任何jsx或es6相关的语法,只聚焦于如何使用react生态搭建利于团队协作、有利于提升开发效率的开发环境。
随风溜达的向日葵
2018/07/25
1.6K0
React 搭建开发环境
React 测试驱动教程
测试是开发周期中的一个重要组成部分。没有测试的代码被称为:遗留代码。对于我而言,第一次学习 React 和 JavaScript 的时候,感到很有压力。如果你也是刚开始学习 JS/React,并加入他们的社区,那么也可能会有相同的感觉。想到的会是:
一个会写诗的程序员
2018/08/17
4.7K0
React 测试驱动教程
Webpack 资源管理
静默虚空
2018/01/05
1.8K0
webpack手动配置React开发环境
React提供了create-react-app的快速构建工具, 但作为一个专业的程序员(老司机), 面对复杂的项目, 入门级的构建工具, 是远远不够的, 我们这里从零开始, 用webpack, 手动
zhaoolee
2018/07/03
1K0
简单使用babel
要使用babel,首先需要了解用的东西?它是一个用来进行ES6转化到ES5的转码器,从而在现有环境中进行执行。 一、配置文件.babelrc(搬运下) Babel的配置文件是.babelrc,存放在项目的根目录下。使用Babel的第一步,就是配置这个文件。 该文件用来设置转码规则和插件,基本格式如下。 { "presets": [], "plugins": [] } presets字段设定转码规则,官方提供以下的规则集,你可以根据需要安装。 # ES2015转码规则 $ npm install
用户1148881
2018/01/15
7870
Flow 静态类型检查开发环境搭建
Flow 是 Facebook 出品的,针对 JavaScript 的静态类型检查工具。它可以帮助捕获 JavaScript 开发中的常见错误,而不需要额外地修改原有的代码,比如静态类型转换,空值引用等问题。同时,Flow 为 JavaScript 添加了静态类型的语法标识,这样开发者便可以明确代码中的类型,让其自动地被 Flow 所维护。本文将详细介绍使用 Webpack、ESlint、Babel 与 Flow 集成的开发环境的构建过程。
用户6167509
2020/04/21
1.2K0
webpack构建自定义react应用
首先我们要确定,react并不是在webpack中像插件一样安装就可以直接使用,我们需要支持jsx以及一些es6的一些比较新的语法,在creat-react-app这个脚手架中已经帮我们高度封装了react项目的一些配置,甚至你是看不到很多的配置,比如@babel/preset-react转换jsx等。所以我们需要知道一个react项目需要哪些插件的前提条件,本文主要参考从头开始打造工具链[1]
Maic
2022/07/28
5540
webpack构建自定义react应用
搞清楚怎样基于 Webpack5 从 0 搭建 React开发环境-超详细
出处 @刘江 ,原文地址 https://juejin.cn/post/6929496472232656909
zz_jesse
2021/04/21
2.6K0
搞清楚怎样基于 Webpack5 从 0 搭建 React开发环境-超详细
babel入门基础
背景 babel的官网说babel是下一代的js语法编译器,现在自己也在很多项目中使用了babel,可是自己对babel的认识呢,只停留在从google和别人项目中copy的配置代码上,内心感到很不安,最近花了点时间整理了一下,分享给大伙。 babel常用配置 通常在前端或node项目中,进行以下配置: 入口文件app.babel.js里面配置: // babel require('babel-core/register')({ presets: ['es2015', 'stage-0'] }); re
用户1217459
2018/01/31
9310
Webpack+Babel+React开发环境搭建
前言 我们知道前端的框架纷繁复杂,各有各的优点。而我们选择使用React作为开发框架的时候,往往会选择Webpack+Babel+React来开始我们的项目。之前也讲过其他的前端框架,如 gulp+webpack,准确的说这不是一个框架,只是项目组织的形式而已。 Webpack+Babel+React环境搭建 安装Webpack 关于Webpack的介绍这里不讲解,大家可以看之前的讲解webpack介绍。 npm install webpack -g 创建一个项目 创建一个名叫learn-webpack项目
xiangzhihong
2018/02/05
8540
Webpack+Babel+React开发环境搭建
现代Web开发系列教程_03
现在我们使用React重写昨天的hello world示例。本篇涉及了很多react的知识,如果不清楚,建议先看看react官方文档 安装react及babel npm install react react-dom --save npm install babel-core babel-loader babel-preset-react --save-dev 修改js代码及模板文件 demo2.js var React = require('react'); var ReactDOM = require(
jeremyxu
2018/05/10
7090
相关推荐
手把手教你全家桶之React(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验