React实现todolist功能

一、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和端口,这样就能监听到手机访问的网络,拦截请求,代理本地地址,返回本地数据。

需要注意的是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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • React-redux实现小案例(todolist)的过程

    使用React-redux实现,待办事项todolist案例. 注:以下列出主要页面代码,为说明React-redux实现的过程,所以并没有将案例的完整代码展示! 一.全局安装:rudux.react-redux npm install redux --save npm install react-redux 二.主要代码: 1.项目的入口文件index.js import React from 'react'; import ReactDOM from 'react-dom'; import

  • React+Redux实现简单的待办事项列表ToDoList

    使用Redux做了一个简单的ToDoList待办事项列表 这个例子也是源于Redux作者Dan Abramov的视频demo 还要特别说明一下 我还没有使用react-redux库进行解耦(可能以后加) 也没有拆分成多个文件等等优化 为了单纯的练习redux 适合初步学习redux的同学 本人学疏才浅,发现可以优化的地方或者问题还请大家指正,谢谢 功能样式 样子就是这样的 在输入框输入待办事项 功能很简单 鼠标点击Add或者键盘按下Enter输出 ShowAll显示全部待办事项 ShowActi

  • react用Redux中央仓库实现一个todolist

    本文实例为大家分享了react用Redux中央仓库实现一个todolist的具体代码,供大家参考,具体内容如下 Redux简单介绍 Redux是一个用来管理管理数据状态和UI状态的JavaScript应用工具.随着JavaScript单页应用(SPA)开发日趋复杂,JavaScript需要管理比任何时候都要多的state(状态),Redux就是降低管理难度的.(Redux支持React,Angular.jQuery甚至纯JavaScript) Redux Dev Tools插件 Redux调试工

  • react+redux的升级版todoList的实现

    又是很久不写博客了,最近在用蚂蚁金服的ant-design-pro写毕设,写着写着写不下去了,很多东西都不理解,不得不说大神写出来的东西都是需要花学习成本的,或者底子好,对于React新手来说就有点难了.所以就老老实实的认真看了下Redux到底如何使用,在这里推荐一下自己最近在看的书,写的算是比较详细的:<深入React技术栈>.废话不多说,今天就分享下自己如何使用redux来实现一个todoList的,希望对想要用redux的你会有所帮助. (为什么叫升级版呢?因为之前写过一个没有用redu

  • 用React实现一个完整的TodoList的示例代码

    前言:算起来已经有一个多月没有写博客了,近来懈怠了不少,也不知道要写些什么,最近学了一段时间的React,一直都在看些理论性的知识,总觉得应该写个什么来练练手,所以还是拿个简单的todoList来举个例子吧! 一. 首先根据效果图讲一下要实现的功能吧 todoList最终效果图 (1)可以添加任务: (2)已完成任务以及未完成任务的颜色区分开: (3)进行添加任务,修改任务状态,以及删除任务时,下面的任务完成数目和任务总数要进行变化: 以上就是要实现的功能. 二. 接下来该如何设计呢? (1)任

  • React实现todolist功能

    一.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()

  • vue实现todolist功能、todolist组件拆分及todolist的删除功能

    •简单todolist功能的实现 用户点击提交按钮时,将input框的内容显示在下方的list中,同时清空list中内容. <body> <div id="root"> <div> <input v-model="inputValue"/> <button @click="submit">submit</button> </div> <ul> <

  • Vuejs 实现简易 todoList 功能 与 组件实例代码

    todoList 结合之前 Vuejs 基础与语法 •使用 v-model 双向绑定 input 输入内容与数据 data •使用 @click 和 methods 关联事件 •使用 v-for 进行数据循环展示 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>TodoList</title> <s

  • 原生JavaScript实现todolist功能

    该项目主要可以练习js操控dom,事件,事件触发之间的逻辑关系,以及如何写入缓存,获取缓存. 主要功能: 将用户输入添加至待办项 可以对todolist进行分类,用户勾选即将待办项分入已完成组 todolist的每一项可删除和编辑 将用户输入数据写入localStorage本地缓存,实现对输入数据的保存 可以清楚域名下本地缓存,并清空所有todolist项 具体功能的实现 HTML代码 <!DOCTYPE html> <html lang="en"> <h

  • react实现todolist的增删改查详解

    目录 以todolist为例 目录如下 app.js Input.js List.js Item.js Total.js Mask.js(弹窗) bus.js App.css 总结 以todolist为例 目录如下 app.js import React, { PureComponent } from 'react' import Input from './components/Input' import List from './components/List' import Total f

  • vue实现留言板todolist功能

    通过前面两篇文章的的学习,我们掌握了vue的基本用法. 本文,就利用这些基础知识来实现一个留言板, 老外把他称之为todolist. 第一步.使用bootstrap做好布局 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <link rel="stylesheet&quo

  • React注册倒计时功能的实现

    一.React版本 16.4.1 二.具体代码如下 设置state属性 constructor(props){ super(props); this.state = { btnText:'获取验证码', seconds: 60, //称数初始化 liked: true //获取验证码文案 } } 2.倒计时 // 获取验证码 sendCode = () => { let siv = setInterval(() => { this.setState({ liked:false, seconds

  • 利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)

    1.简单介绍 在学习完HTML.CSS和一些JS后,博主也利用一些空余的时间的写了一个关于JS简单应用的Demo,主要实现的是一个Todolist(类似于记事本)的应用,可以实现数据的增.删.改.查,并且使用localStorage实现数据的本地持久化存储,具体就接着往下看吧. 2.运行截图    往输入框里输入内容:    进行添加后默认添加到未完成一栏: 将刚刚添加的事项进行修改: 修改成功:    将修改成功后的事项设置成已完成:    对"干饭"."睡觉"进

  • vue实现todolist基本功能以及数据存储功能实例详解

    实现todolist功能,具体实现如下: 可以实现对list添加.移除以及状态转变,其中添加功能既可以通过鼠标点击按钮实现,也可以通过回车键按下实现,通过使用v-model对checked的值进行双向绑定来完成状态的改变.在本次实际操作中仍存在一个小问题就是methods中函数调用,在完成数据存储前可以通过this.$options.methods.addFun();进行调用. <div id="app"> <input type="text" v

  • Vue中父子组件通讯之todolist组件功能开发

    一.todolist功能开发 <div id="root"> <div> <input type="text" v-model="inputValue"> <button @click="handleSubmit">提交</button> </div> <ul> <li v-for="(item, index ) of list

随机推荐