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 相关文章推荐
filters.revealTrans.Transition使用方法小结
Aug 19 Javascript
jQuery UI AutoComplete 使用说明
Jun 20 Javascript
利用浏览器全屏api实现js全屏
Jan 16 Javascript
jQuery中:image选择器用法实例
Jan 03 Javascript
JavaScript中exec函数用法实例分析
Jun 08 Javascript
JavaScript判断按钮被点击的方法
Dec 13 Javascript
vue.js根据代码运行环境选择baseurl的方法
Feb 28 Javascript
详解使用create-react-app快速构建React开发环境
May 16 Javascript
JS中min函数实例讲解
Feb 18 Javascript
vue如何截取字符串
May 06 Javascript
简单了解JavaScript中的执行上下文和堆栈
Jun 24 Javascript
Vue实现滑动拼图验证码功能
Sep 15 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
ThinkPHP3.1新特性之多数据库操作更加完善
2014/06/19 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
分享5个非常有用的Laravel Blade指令
2018/05/30 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
原生js实现日期联动
2015/01/12 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
js初始化验证实例详解
2016/11/26 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
JS中的三个循环小结
2017/06/20 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
2018/05/09 Javascript
layui radio性别单选框赋值方法
2018/08/15 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
python将图片文件转换成base64编码的方法
2015/03/14 Python
Python 实现购物商城,含有用户入口和商家入口的示例
2017/09/15 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
python中count函数简单用法
2020/01/05 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
计算机本科生自荐信
2013/10/15 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书