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时间函数基础介绍
Mar 28 Javascript
js跑步算法的实现代码
Dec 04 Javascript
JS Replace 全部替换字符的用法小结
Dec 24 Javascript
jQuery插件分享之分页插件jqPagination
Jun 06 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
May 16 Javascript
JavaScript判断IE版本型号
Jul 27 Javascript
学习JavaScript设计模式之单例模式
Jan 19 Javascript
JS动态添加选项案例分析
Oct 17 Javascript
探究Vue.js 2.0新增的虚拟DOM
Oct 20 Javascript
Mac下安装vue
Apr 11 Javascript
uni-app之APP和小程序微信授权方法
May 09 Javascript
简单了解JS打开url的方法
Feb 21 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代码把全角数字转为半角数字
2007/12/10 PHP
php设计模式 Interpreter(解释器模式)
2011/06/26 PHP
解析CodeIgniter自定义配置文件
2013/06/18 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
PHP使用XMLWriter读写xml文件操作详解
2018/07/31 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
JavaScript去掉空格的方法集合
2010/12/28 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
JS操作Cookies的小例子
2013/10/15 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
小程序云开发获取不到数据库记录的解决方法
2019/05/18 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
Python中的魔法方法深入理解
2014/07/09 Python
Python构建XML树结构的方法示例
2017/06/30 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
Python匿名函数及应用示例
2019/04/09 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
Python 解码Base64 得到码流格式文本实例
2020/01/09 Python
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
英国老牌潮鞋店:Offspring
2019/08/19 全球购物
网上签名寄语活动留言
2014/01/18 职场文书
致200米运动员广播稿
2014/02/06 职场文书
Java数据结构之堆(优先队列)
2022/05/20 Java/Android