React案列
React 做的小案列
记录学习笔记什么的~
仓库地址
博客地址
学习资料-reactjs
学习资料-imooc
React案列一
简易版-todoList
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| import React, { Component } from "react";
import "./App.css";
class App extends Component {
constructor(props){ super(props) this.state = { list: [], inputValue: '' } } addList(){ this.setState({ list: [...this.state.list, this.state.inputValue], inputValue: '' }) }
changeInput(e) { let value = e.target.value this.setState({ inputValue: value, }) }
delList(index) { let list = [...this.state.list] list.splice(index, 1) this.setState({ list }) }
render() { return ( <div> <div> <input value={this.state.inputValue} onChange={this.changeInput.bind(this)} type="text"/> <button onClick={this.addList.bind(this)}>添加</button> </div> <ul> { this.state.list.map((item,index) => { return ( <li key={index} onClick={this.delList.bind(this, index)}>{item}</li> ) }) } </ul> </div> ); } }
export default App;
|
- 事件,需要state里面的值需要绑定this
1
| onClick={this.delList.bind(this, index)}
|
- 改变state 需要用 this.setState
- input 双向绑定数据 不用改变事件 输入框内容不会改变 并且警告报错
1 2 3 4 5 6 7 8 9 10 11
| changeInput(e) { let value = e.target.value this.setState({ inputValue: value, }) }
<input value={this.state.inputValue} onChange={this.changeInput.bind(this)} type="text"/>
|
刚刚搜了一下
参考文章 react中实现数据双向绑定
todoList 组件与通信
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
import React, { Component, Fragment } from "react"; import Item from './Item' class App extends Component { constructor(props){
this.addList = this.addList.bind(this) this.changeInput = this.changeInput.bind(this) this.delList = this.delList.bind(this) } getHead() { return ( <div> <input value={this.state.inputValue} onChange={this.changeInput} type="text"/> <button onClick={this.addList}>添加</button> </div> ) }
getItem() { return ( this.state.list.map((item,index) => { return ( <Item delList={this.delList} key={index} content={item} index={index} /> ) }) ) }
render() { return ( <Fragment> {this.getHead()} <ul>{this.getItem()}</ul> // 函数返回 Item </Fragment> ); } }
export default App;
import React, { Component } from "react";
class Item extends Component {
constructor(props){ super(props) this.delItem = this.delItem.bind(this) }
delItem(){ const {delList, index} = this.props delList(index) }
render() { const { content } = this.props; return ( <li onClick={this.delItem}>{content}</li> // 调用删除方法 ) } }
export default Item
|
css 样式
1.内样样式需要
1
| style={{'background': 'red','color': '#fff'}}
|
- 定义类名不能用 class
因为 class 已经用来 定义React组件
Qq:952822399
Qq群 iD 718639024
大家也可以进来互相交流~
最后就是厚脸皮的一步(觉得不错可以点个star哦~) 仓库地址
同时也欢迎Pr!!!
同时也欢迎Pr!!!
同时也欢迎Pr!!!