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 相关文章推荐
60个很实用的jQuery代码开发技巧收集
Dec 15 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
May 11 Javascript
js实现悬浮窗效果(支持拖动)
Mar 09 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
Sep 13 Javascript
vue-cli脚手架-bulid下的配置文件
Mar 27 Javascript
vue实现动态列表点击各行换色的方法
Sep 13 Javascript
vue服务端渲染添加缓存的方法
Sep 18 Javascript
js 将线性数据转为树形的示例代码
May 28 Javascript
JS操作json对象key、value的常用方法分析
Oct 29 Javascript
Vuex的各个模块封装的实现
Jun 05 Javascript
基于vue实现简易打地鼠游戏
Aug 21 Javascript
JavaScript分页组件使用方法详解
Jul 26 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
杏林同学录(九)
2006/10/09 PHP
删除数组元素实用的PHP数组函数
2008/08/18 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
2010/06/11 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
PHPCMS2008广告模板SQL注入漏洞修复
2016/10/11 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
jQuery 标题的自动翻转实现代码
2009/10/14 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
瑞典网上购买现代和复古家具:Reforma
2019/10/21 全球购物
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
餐饮业创业计划书范文
2014/01/06 职场文书
软件部经理岗位职责范本
2014/02/25 职场文书
安全教育实施方案
2014/03/02 职场文书
诚信承诺书模板
2014/05/26 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
2014年英语工作总结
2014/12/20 职场文书
教师个人培训总结
2015/02/11 职场文书
元旦晚会开场白
2015/05/29 职场文书
老兵退伍感言
2015/08/03 职场文书
利用js实现简单开关灯代码
2021/11/23 Javascript
SQLServer常见数学函数梳理总结
2022/08/05 MySQL