React实现todolist功能


Posted in Javascript onDecember 28, 2020

一、index.js

ReactDOM.render(
 <React.StrictMode>
  <TodoList />
 </React.StrictMode>,
 document.getElementById('root')
);

二、TodoList

1、constructor

constructor(props) {
    super(props);
    this.state = {
      inputValue: '',
      list: []
    }
  }

2、render

render() {
    return (
      <React.Fragment>
        <div>
          {/*label标签的作用,扩大点击范围*/}
          <label htmlFor='insertArea'>输入内容</label>
          <input
            id='insertArea'
            className={'inputStyle'}
            value={this.state.inputValue}
            onChange={event => this.handleInputChangle(event)}/>
          <button onClick={event => this.handleButtonVlue(event)}>提交</button>
          <hr/>
          <ul>
            {this.getTodoList()}
          </ul>
        </div>
      </React.Fragment>
    )
  }

3、getTodoList

getTodoList() {
    return (
      this.state.list.map((value, index) => {
        return <TodoItem2
          key={index}
          itemVlue={value}
          itemIndex={index}
          itemDelete={this.handleItemDelete.bind(this)}>
          {/*这块需要强制绑定为父组件的this,否则在子组件中找不到*/}
        </TodoItem2>
      })
    );
  }

4、事件函数

/**
   * 监听输入框变化
   **/
  handleInputChangle(e) {
    const value = e.target.value;
    this.setState(() => ({
      inputValue: value
    }))
  }
 
  /**
   * 监听点击按钮
   **/
  handleButtonVlue(e) {
    this.setState((prevStatus) => ({
      list: [...prevStatus.list, this.state.inputValue],
      inputValue: ''
    }))
  }
 
  /**
   * 监听点击item删除
   **/
  handleItemDelete(index) {
    this.setState((preStatus) => {
      const list = [...preStatus.list];
      list.splice(index, 1)
      return {
        list
      }
    });
  }

5、网络请求

使用Charles代理网络,安装证书,设置端口,在手机上面打开网络WIFI,设置代理IP和端口,这样就能监听到手机访问的网络,拦截请求,代理本地地址,返回本地数据。

React实现todolist功能

需要注意的是charles识别不出来localhost,需要在package.json中改成设置:

* "start": "set PORT=3000 HOST=localhost.charlesproxy.com && react-scripts start",

访问时候使用:

http://localhost.charlesproxy.com:3000/

(1)引入axios

yarn yarn add axios 

(2)在componentDidMount进行网络请求

/**
   * 这块进行网络请求
   */
  componentDidMount() {
    axios.get('api/todolist')
      .then((res) => {
        this.setState({
          list: [...res.data]
        })
      }).catch(() => {
      alert('发生错误')
    })
  }

这样运行程序的时候初始值就有了数据了。

总结:当前组件的state或者prop发生改变的时候,App中的render函数就会重新执行。做到数据和页面同步。当父组件发生变化重新执行的时候,子组件的render也会被重新执行一次。

到此这篇关于React实现todolist功能的文章就介绍到这了,更多相关React实现todolist内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
彻底搞懂JS无缝滚动代码
Jan 03 Javascript
Javascript 检测、添加、移除样式(className)函数代码
Sep 08 Javascript
如何通过javascript操作web控件的自定义属性
Nov 25 Javascript
JS中如何设置readOnly的值
Dec 25 Javascript
jQuery提示效果代码分享
Nov 20 Javascript
实例讲解JQuery中this和$(this)区别
Dec 08 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
Oct 19 Javascript
详解基于Bootstrap扁平化的后台框架Ace
Nov 27 Javascript
深入学习AngularJS中数据的双向绑定机制
Mar 04 Javascript
js添加千分位的实现代码(超简单)
Aug 01 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
Oct 31 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
Feb 16 Javascript
mustache.js实现首页元件动态渲染的示例代码
Dec 28 #Javascript
11个Javascript小技巧帮你提升代码质量(小结)
Dec 28 #Javascript
vue中watch的用法汇总
Dec 28 #Vue.js
浅析vue中的nextTick
Dec 28 #Vue.js
js仿淘宝放大镜效果
Dec 28 #Javascript
JavaScript实现原型封装轮播图
Dec 27 #Javascript
JavaScript代码实现简单计算器
Dec 27 #Javascript
You might like
php生成缩略图的类代码
2008/10/02 PHP
PHP导入Excel到MySQL的方法
2011/04/23 PHP
php登陆页的密码处理方式分享
2013/10/14 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
PHP date_default_timezone_set()设置时区操作实例分析
2020/05/16 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
JavaScript格式化数字的函数代码
2010/11/30 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
2014年最火的Node.JS后端框架推荐
2014/10/27 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
关于HTML5的data-*自定义属性的总结
2018/05/05 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
2019/11/09 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
Python之PyUnit单元测试实例
2014/10/11 Python
python xml解析实例详解
2016/11/14 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
python 自动批量打开网页的示例
2019/02/21 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
Python中bisect的使用方法
2019/12/31 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
python安装cx_Oracle和wxPython的方法
2020/09/14 Python
服务员岗位职责
2014/01/29 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
市级优秀班主任事迹材料
2014/05/13 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
2015毕业寄语大全
2015/02/26 职场文书
永中文档在线转换预览基于nginx配置部署方案
2022/06/10 Servers