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禁止输入数字以外的字符的示例(纯数字验证码)
Apr 10 Javascript
js Dialog 去掉右上角的X关闭功能
Apr 23 Javascript
javascript实现鼠标拖动改变层大小的方法
Apr 30 Javascript
解析Node.js异常处理中domain模块的使用方法
Feb 16 Javascript
js实现密码强度检测【附示例】
Mar 30 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
Jan 10 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
Apr 26 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
May 17 Javascript
基于vue+canvas的excel-like组件实例详解
Nov 28 Javascript
浅谈Webpack自动化构建实践指南
Dec 18 Javascript
JS计算两个时间相差分钟数的方法示例
Jan 10 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
Dec 10 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
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
2017/02/06 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
php链式操作的实现方式分析
2019/08/12 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
Javascript - HTML的request类
2007/01/09 Javascript
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
2011/03/12 Javascript
jQuery代码优化 选择符篇
2011/11/01 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
jQuery on()方法示例及jquery on()方法的优点
2015/08/27 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
2015/12/20 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
Pytorch to(device)用法
2020/01/08 Python
python实现处理mysql结果输出方式
2020/04/09 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
美国女士泳装店:Swimsuits For All
2017/03/02 全球购物
国际书籍零售商:Wordery
2017/11/01 全球购物
英国健身超市:Fitness Superstore
2019/06/17 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
工程质量承诺书
2014/03/27 职场文书
保护动物倡议书
2014/04/15 职场文书
珍惜资源的建议书
2014/08/26 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
实习证明模板
2015/06/16 职场文书