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 DOM学习第八章 表单错误提示
Feb 19 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
Apr 16 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
Feb 08 Javascript
原生js图片轮播效果实现代码
Oct 19 Javascript
JS实现动态修改table及合并单元格的方法示例
Feb 20 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
Mar 31 Javascript
Vue文件配置全局变量的实例
Sep 06 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
Dec 11 jQuery
详解Vuex下Store的模块化拆分实践
Jul 31 Javascript
Vue微信公众号网页分享的示例代码
May 28 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
Jul 20 Javascript
vue mvvm数据响应实现
Nov 11 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无敌近乎加密方式!
2010/07/17 PHP
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
Thinkphp中import的几个用法详细介绍
2014/07/02 PHP
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
python enumerate函数的使用方法总结
2017/11/15 Python
简单谈谈python中的lambda表达式
2018/01/19 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
django 捕获异常和日志系统过程详解
2019/07/18 Python
python科学计算之numpy——ufunc函数用法
2019/11/25 Python
python3实现飞机大战
2020/11/29 Python
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
给老师的道歉信
2014/01/11 职场文书
入党综合考察材料
2014/06/02 职场文书
土地转让协议书
2014/09/27 职场文书
房屋租房协议书范本
2014/12/04 职场文书
统计员岗位职责
2015/02/11 职场文书
工作自我推荐信范文
2015/03/25 职场文书
营运督导岗位职责
2015/04/10 职场文书
公司门卫岗位职责
2015/04/13 职场文书
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js