1.App.js的代码如下:

import React, { Component } from 'react';
import Test from './components/Test.jsx';
import './assets/css/todolist.css'; class App extends Component {
//组件的构造函数,当这个组件被执行的时候,constructor会自动被执行
constructor(props){
//固定的写法
super(props);
this.state = {
list: [
'learn react',
'learn english',
'learn vue'
]
}
} handleBtnClick() {
this.state.list.push('hello world');
} render() {
return (
<div>
<div>
<Test/>
</div> <div className="todoListStyle">
<div>
<input />
<button onClick={this.handleBtnClick}>Add</button>
</div>
<ul>
{
this.state.list.map((item) => {
return <li>{item}</li>
})
}
</ul>
</div>
</div>
);
}
} export default App;

运行项目,控制台中报错:

分析:handleBtnClick这个函数执行的时候,函数体里面的this指的是button这个按钮,这个按钮上是没有state这个变量的,所以我们希望点击Add这个按钮的时候,handleBtnClick这个函数中的this指向的是当前这个组件

我们可以把代码改写成这样 onClick={this.handleBtnClick.bind(this)} 这句代码的意思是这个函数执行的时候,this永远都指向外面的这个this,外面的这个this指向的是当前这个组件

但是控制台中还会有另外一个错误:

分析:在react中,当要改变this.state中的数据,不要直接去调用this.state.list这样去改,需要调用react提供给我们的一个方法:setState

并且对于返回的每一个<li>标签,都需要有一个key

所以上面的代码应改写为:

<ul>
            {
              this.state.list.map((item, index) => {
                return <li key={index}>{item}</li>
              })
            }
          </ul>

react学习过程中遇到的错误记录的更多相关文章

  1. React 学习过程中常见的错误

    1,  react报错Module not found: Error: Can't resolve     解决:  一般是加载文件的路径写错了:      

  2. react native中一次错误排查 Error:Error: Duplicate resources

    最近一直在使用react native中,遇到了很多的坑,同时也学习到了一些移动端的开发经验. 今天在做一个打包的测试时,遇到了一个问题,打包过程中报错“Error:Error: Duplicate ...

  3. React框架新闻网站学习过程中遇到的错误总结

    1.安装指定版本插件命令 npm install 插件名字@1.1.4(版本号) --save 或 yarn add 插件名字@1.1.4(版本号) --dev 2.Error:‘Link’ is n ...

  4. Android编程学习过程中遇到的错误以及解决办法

    Android Studio遇到的问题 Android Studio一直提示右下角那个错误,Failed to open zip file.我是根据这位大佬的博客https://www.cnblogs ...

  5. python学习过程中的踩坑记录<若干,随时更新>

    问题1:python中print的连串输出与java不一样? 输入print(code +"+++"); --在代码中写入,界面未报错,但是告诉你不行 会报错,如图: 解决办法: ...

  6. SVC 工作过程中出现的错误记录(SEO项目)

    1.同一のキーを含む項目が既に追加されています.追加的项目中含有重复主键) /seo' アプリケーションでサーバー エラーが発生しました. 同一のキーを含む項目が既に追加されています. 説明: 現在の ...

  7. SpringBoot入门项目CRM学习过程中的报错记录(更新ing)

    在用mybatis自动生成实体类和mapper时报错..... is unrecognized or represents more than one time zone. You must conf ...

  8. spring web mvc中遇到的错误以及学习小记(持续记录)

    错误:cvc-complex-type.2.4.a: 发现了以元素 'init-param' 开头的无效内容.应以 '{"http://java.sun.com/xml/ns/javaee& ...

  9. react + antiDesign开发中遇到的问题记录

    react + antiDesign开发中遇到的问题记录 一:页面中子路由失效: antiDesign的官方实例中,会把路由重复的地方给去重,而且路由匹配模式不是严格模式.所以我们需要在util.js ...

随机推荐

  1. cmd下,regsvr32不是内部或外部命令

    https://jingyan.baidu.com/article/48b37f8d2fb1aa1a646488cc.html

  2. 末学者笔记--Linux计划任务及压缩归档

    一.计划任务 1.介绍: (1)定义:简单说就是通过一些设置,来使linux系统定时执行一些操作与任务. (2)作用:一般可执行一些周期性操作,也可定期备份数据. (3)可使用的命令:常用为at和cr ...

  3. 金蝶K3 WISE BOM多级展开_销售成本表

    /****** Object: StoredProcedure [dbo].[pro_bobang_SaleCost] Script Date: 07/29/2015 16:13:43 ******/ ...

  4. powershell 激活WIN10

    1.以win10专业版为例,鼠标右键点击开始图标,选择[windows powershell(管理员)],或者命令提示符管理员:2.打开命令窗口,复制这个命令slmgr /ipk W269N-WFGW ...

  5. scrapy_redis 相关: 将 jobdir 保存的爬虫进度转移到 Redis

    0.参考 Scrapy 隐含 bug: 强制关闭爬虫后从 requests.queue 读取的已保存 request 数量可能有误 1.说明 Scrapy 设置 jobdir,停止爬虫后,保存文件目录 ...

  6. numpy array分割-【老鱼学numpy】

    有合并,就有分割. 本节主要讲述如何通过numpy对数组进行横向/纵向分割. 横向/纵向分割数组 首先创建一个6行4列的数组,然后我们对此数组按照横向进行切割,分成3块,这样每块应该有2行,见例子: ...

  7. laravle框架报错Malformed UTF-8 characters, possibly incorrectly encoded

    原因使用了redis, 没有配置 复制了Malformed UTF-8 characters, possibly incorrectly encoded百度了一下. 一直没找到原因 后来看到https ...

  8. open

    open服务指的是封装的订单流接口,给外部第三方提供使用.(当然也可以区别的名字,我司这么叫而已,并且是用Java写的,谁晓得为什么不选择PHP来写)通过open api合作方就可以通过调用接口直接下 ...

  9. java自动化-junit框架简述

    本人使用的是java的junit框架来组织的自动化测试,故我这边需要简单介绍一下junit框架 首先,建议自行百度一下junit框架,先有一个大概的了解 所谓的接口自动化测试,会对多个接口中每一个接口 ...

  10. Laravel安装redis扩展

    Laravel安装redis扩展 1.使用命令行,执行(当然要先安装composer) composer require predis/predis 2.执行完就安装好了,redis相关配置可以到.e ...