首页 > 其他分享 >P09:列表数据化、列表添加数据

P09:列表数据化、列表添加数据

时间:2023-02-09 12:05:26浏览次数:41  
标签:服务 代码 list 列表 item state inputValue P09 数据


React16 基础

  • ​​阐述​​
  • ​​让列表数据化​​
  • ​​增加服务选项​​
  • ​​解决key值错误​​
  • ​​预览​​

阐述

有了上节课的基础,这节课终于可以添加服务,为所欲为了,随意增加你想要的服务了。

这节课我们就来增加一个躺式采耳服务,体验一把帝王级待遇。

让列表数据化

现在的列表还是写死的两个​​<li>​​​标签,那要变成动态显示的,就需要把这个列表先进行数据化,然后再用 ​​javascript​​ 代码,循环在页面上。

我们先给上节课的 ​​list​​ 数组增加两个数组元素代码如下:

constructor(props){
super(props) //调用父类的构造函数,固定写法
this.state={
inputValue:'willem' , // input中的值
//----------主要 代码--------start
list:['基础按摩','精油推背']
//----------主要 代码--------end
}
}

有了数据后,可以在JSX部分进行循环输出,代码如下:

render(){
return (
<Fragment>
<div>
<input value={this.state.inputValue} onChange={this.inputChange.bind(this)} />
<button> 增加服务 </button>
</div>
<ul>
{
this.state.list.map((item,index)=>{
return <li>{item}</li>
})
}
</ul>
</Fragment>
)
}

完成上面的步骤,数据就不再是固定的了,而是动态管理的,也为我们接下来的添加打下了基础,剩下的步骤也显得很简单了。

增加服务选项

要增加服务选项,我们需要再增加按钮上先绑定一个方法 ​​this.addList(这个方法目前还没有,需要我们接下来建立)​​。

<button onClick={this.addList.bind(this)}> 增加服务 </button>

接下来就写 ​​this.addList​​ 方法,代码如下:

//增加服务的按钮响应方法
addList(){
this.setState({
list:[...this.state.list,this.state.inputValue]
})
}

这里需要说的是​​...​​​这个是ES6的新语法,叫做扩展运算符。
意思就是把 ​​​list​​ 数组进行了分解,形成了新的数组,然后再进行组合。这种写法更简单和直观,所以推荐这种写法。

写完上面的代码,应该就可以实现增加项目了,你可以试着增加一下自己喜欢的服务进去,比如”美女踩背”………

解决key值错误

高兴的同时其实是有一些隐患的,打开浏览器的控制台F12,可以清楚的看到报错了。

P09:列表数据化、列表添加数据_数组


这个错误的大概意思就是缺少 ​​key​​​ 值。就是在用 ​​map​​ 循环时,需要设置一个不同的值,这个时React的要求。

我们可以暂时用 ​​index+item​​的形式来实现。

<ul>
{
this.state.list.map((item,index)=>{
return <li key={index+item}>{item}</li>
})
}
</ul>

这样就解决了这个隐患,现在就可以舒服的享受帝王级的服务了。

预览

P09:列表数据化、列表添加数据_数组_02

P09:列表数据化、列表添加数据_react.js_03

Beauty.js 组件

import React,{Component,Fragment } from 'react'

class Beauty extends Component{
//js的构造函数,由于其他任何函数执行
constructor(props){
//调用父类的构造函数,固定写法
super(props)
this.state={
inputValue:'' , // input中的值
//----------主要 代码--------start
list:['基础按摩','精油推背']
//----------主要 代码--------end
}
}

render(){
return (
<Fragment>
<div>
<input value={this.state.inputValue} onChange={this.inputChange.bind(this)} />
<button onClick={this.addList.bind(this)}> 增加服务 </button>
</div>
<ul>
{
this.state.list.map((item,index)=>{
return <li key={index}>{index} - {item}</li>
})
}
</ul>
</Fragment>
)
}

inputChange(e){
// console.log(e.target.value);
// this.state.inputValue=e.target.value;
this.setState({
inputValue:e.target.value
})
}

//增加服务的按钮响应方法
addList(){
this.setState({
list:[...this.state.list,this.state.inputValue]
})
}

}

export default Beauty

P09:列表数据化、列表添加数据_数组_04


标签:服务,代码,list,列表,item,state,inputValue,P09,数据
From: https://blog.51cto.com/u_13571520/6046602

相关文章

  • P10:数组传递下标,删除数组数据
    React16基础​​阐述​​​​数组下标的传递​​​​编写deleteItem方法​​​​正式删除数据​​阐述添加服务虽然很美好,但是有时候也需要有些节制。本文就学习如何删除......
  • Element 中查询前多少天、前多少周、前多少月的数据
    在开发后台管理系统时,经常会遇到这样一种需求,查询前多少天、多少周、多少月的数据,虽然UI框架有自带的组件可以实现这些功能,但是操作起来却不是很方便,而且这些都是查询最近......
  • 获取两个时间节点之间的月份列表
    privatestaticList<String>getMonthBetween(StringminDate,StringmaxDate){ArrayList<String>result=newArrayList<String>();try{......
  • kafkaProducer发送数据分析
    在命令行执行:使用console_producer连接kafka服务,发送数据,利用wireshark抓包查看具体的发送过程   头3条是tcp协议的三次握手。握手成功后,第4条开始console_produc......
  • 基于 Kubernetes 的企业级大数据平台,EMR on ACK 技术初探
    作者:容器服务团队云上大数据的Kubernetes技术路线当前,大数据与机器学习领域颇为关注存储与计算分离架构,逐渐向云原生演进。以Spark为例,云下或自有服务器可以选择Hado......
  • 浅谈mybatis返回单一对象或对象列表的问题
    目录mybatis返回单一对象或对象列表一、说明二、代码测试UserMap.xml映射文件dao文件UserMap.java测试代码和结果文件mybatis返回的对象包含集合 mybatis......
  • Python爬虫爬取html中div下的多个class标签并存入数据库
    使用python爬虫爬取html页面div中的多个class标签,获取后将数据存成列表,然后存入数据库importmysql.connectorimportpymysqlimportrequestsfrombs4importBeautif......
  • MySQL查询一年、一周、三个月的数据
    阅读目录DATE_SUB()函数从日期减去指定的时间间隔DATE_SUB()函数从日期减去指定的时间间隔语法:DATE_SUB(date,INTERVALexprtype)date参数是合法的日期表达......
  • MySQL查询某天的数据
    阅读目录1、DATE_FORMAT()函数用于以不同的格式显示日期/时间数据2、DATEDIFF()函数返回两个日期之间的天数扩展知识1、DATE_FORMAT()函数用于以不同的格式......
  • MySQL的数据结构
    阅读目录MySQL数据结构用b+tree做的为什么不用红黑树叉树呢?什么是B-Tree(B-树)?什么是B+Tree?B+Tree相对于B-Tree的几点不同MySQL数据结构用b+tree......