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 相关文章推荐
Javascript 构造函数,公有,私有特权和静态成员定义方法
Nov 30 Javascript
js创建对象的几种常用方式小结(推荐)
Oct 24 Javascript
JS子父窗口互相操作取值赋值的方法介绍
May 11 Javascript
Javascript执行效率全面总结
Nov 04 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
Sep 13 Javascript
从零学习node.js之文件操作(三)
Feb 21 Javascript
js实现一个简单的数字时钟效果
Mar 29 Javascript
详解vue的数据binding绑定原理
Apr 12 Javascript
react-router实现跳转传值的方法示例
May 27 Javascript
详解webpack之scss和postcss-loader的配置
Jan 09 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
May 28 Javascript
js实现弹幕墙效果
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
一个漂亮的php验证码类(分享)
2013/08/06 PHP
php中操作memcached缓存进行增删改查数据的实现代码
2014/08/15 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
js自执行函数的几种不同写法的比较
2012/08/16 Javascript
JS操作图片(增,删,改) 例子
2013/04/17 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
javascript中cookie对象用法实例分析
2015/01/30 Javascript
解读Bootstrap v4 sass设计
2016/05/29 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
JS验证不重复验证码
2017/02/10 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
Python中的Cookie模块如何使用
2020/06/04 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
用Python 执行cmd命令
2020/12/18 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
荷兰手表网站:Watch2Day
2018/07/02 全球购物
C语言如何决定使用那种整数类型
2016/11/26 面试题
三八妇女节趣味活动方案
2014/08/23 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
委托收款证明
2015/06/23 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书