3.1循环遍历数组的数据,并显示到页面当中
import React, { Component } from 'react' //导入react,component
export default class APP extends Component {
//在state里面定义一个list数组,list里面的每一项都是一个对象,其中ID作为key,text作为内容
state = {
list:[{
id:1,
text:111
},
{
id:2,
text:222
},
{
id:3,
text:333
}
]
}
render() {
//在return外面声明一个newlist变量作为渲染数据,便于拆分复用
let newlist = this.state.list.map((item)=>{ //map方法遍历list中的每一项
return (<div key={item.id}>{item.text}</div>) //渲染每一项的内容
})
return (
<div>
{
newlist //渲染list数据
}
</div>
)
}
}
3-2todolist小案例
实现增加和删除功能
import React, { Component } from 'react'
import { nanoid } from 'nanoid'//这里先安装一个nanoid随机数插件,npm i nanoid安装即可,然后导入该插件
export default class APP extends Component {
myref = React.createRef()//创建ref,赋值给myref
//在state里面定义一个list数组,list里面的每一项都是一个对象,其中ID作为key,text作为内容
state = {
list: [{
id: nanoid(),
text: '张三'
},
{
id: nanoid(),
text: '李四'
},
{
id: nanoid(),
text: '王五'
}]
}
render() {
//在return外面声明一个list1变量作为渲染数据,便于拆分复用
let list1 = this.state.list.map((item, i) =>//map方法遍历list中的每一项,item是每一项,i是每一项索引值
<div key={item.id}>{item.text}//id作为key,text作为内容
<button onClick={() => {//删除按钮
this.del(i)//删除方法,把索引值传过去
}}></button></div>
)
return (
<div>
<input ref={this.myref}></input> //绑定标签
<button onClick={() => { //增加按钮
this.add() //增加方法
}}>
</button>
{
list1 //渲染list数据
}
</div>
)
}
//add(增加)方法
add = () => {
let list2 = [...this.state.list] //拷贝list的数据,不影响原有的list数据
//把搜索框显示的值添加到list2中
list2.push({
id: nanoid(), //随机id
text: this.myref.current.value //搜索框显示的值
})
this.setState({
list: list2 //更新list
})
this.myref.current.value = '' //清空搜索框
}
//del(删除)方法
del = (i) => { //接收传过来的索引值
let list3 = [...this.state.list]//拷贝list的数据,不影响原有的list数据
list3.splice(i, 1) //删除掉想要点击删除的值
this.setState({
list: list3 //更新list
})
}
}
具体结果呈现如下
3-3table选项卡高亮
import React, { Component } from 'react'
import { nanoid } from 'nanoid' //引入nanoid随机数插件
import './css/09-table.less' //引入less
export default class APP extends Component {
//在state里面定义一个list数组,list里面的每一项都是一个对象,其中ID作为key,text作为内容
state = {
list: [{
id: nanoid(),
text: '零食'
},
{
id: nanoid(),
text: '潮玩'
},
{
id: nanoid(),
text: '化妆品'
}],
flog:0
}
render() {
let list = this.state.list.map((item,i)=>//map方法遍历list中的每一项,item是每一项,i是每一项索引值
<div onClick={()=>{ //点击事件
this.change(i) //点击方法,把索引值i传过去
}} key={item.id} className={[`${this.state.flog===i?'active':''}`,`card`].join(' ') }>{item.text}</div> //判断i和flog值是否相等,相等就产生高亮效果
)
return (
<div className='box'>
{
list//渲染list数据
}
</div>
)
}
//点击方法
change(i){
this.setState({
flog:i //让flog=i
})
}
}
效果如下:
有感兴趣的小伙伴,可以加我微信Leyman233,加入我建的一个小群,一起交流前端知识!
版权声明:本文为weixin_44914088原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。