IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> React ES6扩展运算符、父传子现实TodoList增加、删除 -> 正文阅读

[JavaScript知识库]React ES6扩展运算符、父传子现实TodoList增加、删除

//***父组件 TodoList.js>
import React, { Component } from 'react'
import TodoItem from './TodoItem';
import "./style.css"

class TodoList extends Component {
    //类中必有constructor函数 而且会最先执行
    constructor(props) {
        super(props);
        this.state = {
            inputValue: 'dd', //input框内容
            list: ["学习英文", "学习react"] //列表的每一项
        }
        //组件初始化时就把this指向改好,有益性能
        this.handleInputChange = this.handleInputChange.bind(this)
        this.handleButtonClick = this.handleButtonClick.bind(this)
        this.handleItemDelete = this.handleItemDelete.bind(this)
    }
    //双向绑定
    handleInputChange(e) {
        this.setState({ inputValue: e.target.value },)
    }
    //点击提交按钮给this.state.list加一项并渲染在页面
    handleButtonClick() {
        this.setState({
            //...this.state.list相当于目前的展开的this.state.list"学习英文", "学习react",将新的这项也加给list
            list: [...this.state.list, this.state.inputValue],
            inputValue: ''
        })
    }
    //点击删除某个todolist
    handleItemDelete(index) {
        const list = [...this.state.list];//拷贝数组 因为immutable--state不允许修改
        list.splice(index, 1)
        this.setState({
            list: list
        })
    }
    render() {
        return (
            <React.Fragment>
                <div>
                    <label htmlFor="insert">输入内容</label>
                    <input
                        id="insert"
                        className="input"
                        value={this.state.inputValue}
                        onChange={this.handleInputChange} />
                    <button onClick={this.handleButtonClick}>提交</button>
                </div>
                <ul>
                    {
                        this.state.list.map((item, index) => {
                            // 以下全是父传子,子组件中以props接收
                            return (
                                <TodoItem
                                    key={index}
                                    content={item}
                                    idx={index}
                                    deleteItem={this.handleItemDelete}>
                                </TodoItem>
                            )
                            //如果不用子组件 在return中就是以下写法
                            // <li
                            //     key={index}
                            //     onClick={this.handleItemDelete}>
                            //     {item}
                            // </li>
                        })
                    }
                </ul>
            </React.Fragment>
        )
    }
}
export default TodoList;

//***子组件 TodoItem.js>
import React, { Component } from "react";

export default class TodoItem extends Component {
  constructor(props) {
    super(props);
  }
  //点击时调用父组件传过来的方法,参数为父组件传过来的index
  handleClick() {
    //解构赋值改变this.props.xxx写法
    const { deleteItem, idx } = this.props
    deleteItem(idx)
  }

  render() {
    //解构赋值改变this.props.xxx写法
    const { content } = this.props
    return <div onClick={this.handleClick.bind(this)}>{content}</div>
  }
}

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 08:46:34  更:2021-11-26 08:48:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 4:49:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码