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 相关文章推荐
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
Jun 28 Javascript
用循环或if语句从json中取数据示例
Aug 18 Javascript
jQuery 重复加载错误以及修复方法
Dec 16 Javascript
JQuery中的事件及动画用法实例
Jan 26 Javascript
javascript 分号总结及详细介绍
Sep 24 Javascript
微信小程序 ecshop地址三级联动实现实例代码
Feb 28 Javascript
bootstrap+jquery项目引入文件报错的解决方法
Jan 22 jQuery
解决Layui数据表格中checkbox位置不居中的方法
Aug 15 Javascript
JavaScript常见事件处理程序实例总结
Jan 05 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
Mar 29 Javascript
浅谈Vuex注入Vue生命周期的过程
May 20 Javascript
p5.js临摹旋转爱心
Oct 23 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变量范围介绍
2012/10/15 PHP
codeigniter数据库操作函数汇总
2014/06/12 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
2011/03/12 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
DOM事件探秘篇
2017/02/15 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
python logging模块的使用详解
2020/10/23 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
黄河象教学反思
2014/02/10 职场文书
乡镇综治宣传月活动总结
2014/07/02 职场文书
2014年保卫科工作总结
2014/12/05 职场文书
优质护理心得体会
2016/01/22 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang