4. react 基础 - 编写 todoList 功能
编写 TodoList 功能
react 入口 js
#src/index.js
import React from 'react';
import ReactDOM from 'react-dom';
import TodoList from './TodoList'
ReactDOM.render(<TodoList />, document.getElementById('root'));
#src/TodoList.js
// Fragment 为占位符
import React, { Component , Fragment } from 'react';
class TodoList extends Component
{
render(){
// 每一个 render 的 标签 只能返回一个标签 其他的都包含在这个标签内
// 使用 Fragment 能 不然最外层元素 被渲染出来
return (
<Fragment>
<input type='text' /> <button>提交</button>
<ul><li>吃饭</li><li>睡觉</li><li>打豆豆</li></ul>
</Fragment>
);
}
} // 导出 TodoList
export default TodoList
//添加 input change 事件
# todoList.js
import React, { Component , Fragment } from 'react';
class TodoList extends Component
{
constructor( props ){
// 必须 调用一次 父类 constructor 完成父类初始化
super(props)
//对 需要使用的 数据 进行定义 ( 定义在 this.state 下 )
this.state = { inputValue: '' }
}
render(){
return (
<Fragment>
{/* 定义该 文本框的 值 为 this.state.inputValue , 改变事件为 this.inputChange 并制定 该事件的 this 为 TodoList 这个类 */}
<input type='text' value={this.state.inputValue} onChange={this.inputChange.bind(this)} />
<button>提交</button>
<ul><li>吃饭</li><li>睡觉</li><li>打豆豆</li></ul>
</Fragment>
);
}
inputChange(e){
// 设置 this.state.inputValue 的 值 等于 输入的值
this.setState( {inputValue: e.target.value} );
}
} // 导出 TodoList
export default TodoList
//添加 列表 增加删除功能
import React, { Component , Fragment } from 'react';
class TodoList extends Component
{
constructor( props ){
// 必须 调用一次 父类 constructor 完成父类初始化
super(props)
//对 需要使用的 数据 进行定义 ( 定义在 this.state 下 )
this.state = { inputValue: '', list: [] }
}
render(){
return (
<Fragment>
{/* 定义该 文本框的 值 为 this.state.inputValue , 改变事件为 this.inputChange 并制定 该事件的 this 为 TodoList 这个类 */}
<input type='text' value={this.state.inputValue} onChange={this.inputChange.bind(this)} />
{/* 添加点击事件 进行数据添加 */}
<button onClick={this.addClick.bind(this)}>提交</button>
<ul>
{
this.state.list.map((value, index)=>{
// 添加删除子项功能
return <li key={index} onClick={this.itemDelete.bind(this, index)}>{value}</li>
})
}
</ul>
</Fragment>
);
}
inputChange(e){
// 设置 this.state.inputValue 的 值 等于 输入的值
this.setState( {inputValue: e.target.value} );
}
addClick(){
// 点击之后 添加 输入框内的 value 到
this.setState({
list : [...this.state.list, this.state.inputValue],
inputValue: ''
})
}
itemDelete(index){
// 根据 immutable 原则 state 内的 数值 不允许我们 做任何改变
const list = [...this.state.list];
list.splice(index, 1);
this.setState({list:list});
}
} // 导出 TodoList
export default TodoList
4. react 基础 - 编写 todoList 功能的更多相关文章
- 14. react 基础 redux 的编写 TodoList 功能
1. 安装 redux 监听工具 ( 需要翻墙 ) 打开 谷歌商店 搜索 redux devtool 安装第一个即可 2. 安装 redux yarn add redux 3. 创建 一个 store ...
- (三)React基础
3-1 使用React编写TodoList功能 import { Fragment} from ‘react’ Fragment是占位符 用于替代最外层div元素, 防止生成的元素会有两层div嵌套这 ...
- 13. react 基础 redux 的基本介绍 及 用 antd 编写 TodoList 的样式
1. redux 简述 当 store 内的 数据进行变更的时候 多个组件感知到 store 内的数据变化 将会被自动更新 2. redux 工作流 Store 代表数据存储 (例如: 图书馆管理 ...
- 18 react react-redux 的编写 TodoList
1. 安装 react-redux yarn add react-redux 2. react-redux 编写 TodoList 使所有子组件 都能使用 store #index.js import ...
- React Native移动框架功能研究
React Native移动框架功能研究 此篇只研究React Native框架的功能. 一.React Natvie是什么 React Native是使用React(或者说JS)来开发原生APP的框 ...
- HTML&CSS基础-html注释功能
HTML&CSS基础-html注释功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是HTML(Hypertext Markup Language) 超文本标记 ...
- 5. react 基础 - 组件拆分 和 组件传值
1.将 todoList 进行拆分 创建 编写TodoList.js import React, {Component, Fragment} from 'react';import TodoItem ...
- react基础(1)
在 react入门系列 里面,介绍了一些react的基础知识,在react基础部分,会结合手脚架工具进行更多的总结. 关于webpack我在这里就不讲解了,有需要的小伙伴可以自己去百度一下学习资料,我 ...
- 利用React/anu编写一个弹出层
本文将一步步介绍如何使用React或anu创建 一个弹出层. React时代,代码都是要经过编译的,我们很多时间都耗在babel与webpack上.因此本文也介绍如何玩webpack与babel. 我 ...
随机推荐
- P1050 螺旋矩阵
P1050 螺旋矩阵 转跳点:
- HDU - 1698 Just a Hook (线段树---区间修改)
题意:n个棍子,初始值全为1,给定Q个区间,分别赋值,问n个棍子的总值. 分析:lazy标记主要体现在update上. 当l <= L && R <= r时,该结点的子结点 ...
- nginx proxy_pass解释
在当前大部分对外提供的web服务会使用nginx做负载均衡,日常相关的proxy_pass设置有: 以http://192.168.1.101/proxy/test.html进行访问为例子 第一种: ...
- Centos 时间与主机时间不匹配问题解决
有时候新安装的虚拟机的系统时间会和主机的时间差8个小时,这是因为虚拟机和主机所在的时区不同. 这会导致当你往mysql数据库插入数据时如果设置时间为current_time结果会和虚拟机保持一致. 1 ...
- 二十一、JavaScript之访问对象属性
一.代码如下 二.执行效果如下 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" cont ...
- segger rtt 输出 log
调试 mcu 的时候,使用 jlink 的 rtt 可以方便的输出信息. 输出有两种模式, client 和 logger. client 必须依附其他程序,比如说 mdk 调试状态,或者 logge ...
- 仿淘宝 vue
最近自己闲着无聊,用vue仿照淘宝打算写个皮囊,顺便把遇到的问题顺便记录下 1.动画问题 (1)单个元素给动画 <transition name="fade">< ...
- 微信小程序 -- 自定义抽屉式菜单(底部,从下向上拉出)
实现一个抽屉菜单的案例 wxml <!--button--> <view class="btn" bindtap="powerDrawer" ...
- POJ 3461:Oulipo
Oulipo Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28155 Accepted: 11251 Descript ...
- 【redis】redis底层数据结构原理--简单动态字符串 链表 字典 跳跃表 整数集合 压缩列表等
redis有五种数据类型string.list.hash.set.zset(字符串.哈希.列表.集合.有序集合)并且自实现了简单动态字符串.双端链表.字典.压缩列表.整数集合.跳跃表等数据结构.red ...