React 列表添加数据

本文介绍了如何在React中让列表数据化,通过给数组增加元素并使用JSX进行循环输出实现动态列表。接着讲解如何增加服务选项,通过绑定方法和使用扩展运算符更新数组。最后解决key值错误的问题,确保React组件的正确渲染。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

让列表数据化

现在的列表还是写死的两个

  • 标签,那要变成动态显示的,就需要把这个列表先进行数据化,然后再用javascript代码,循环在页面上。
  • 我们先给上节课的list数组增加两个数组元素,代码如下:

        constructor(props){  构造函数
            // 调用父类方法,继承
            super(props) 
            this.state = {
                inputValue:"", //value的数据
                list:["基础按摩","推背"]   //类表数据
            }
        }
    

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

        render(){
            return(
                // 最外层只能有一个div ,如果使用flex布局不需要div包括,可以使用Fragment包括
                <Fragment>
                    <div> 
                        {/* 这里可以使用js代码 使用{}括起来 onChange事件*/}
                        <input value={this.state.inputValue} onChange={this.inputChange}/>  
                        <button>增加服务</button></div>
                    <ul>
                        {
                            this.state.list.map((item,index)=>{
                            return <li>{item}</li>
                            })
                        }
                    </ul>
                </Fragment>
            )
        }
    

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

    增加服务选项

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

      <button onClick={this.buttonOnClick}>增加服务</button></div>
    

    接下来就是把this.buttonOnClick方法,代码如下:

        buttonOnClick=()=>{
            // 正加列表的数据
            this.setState({
                // 扩展运算符
                list:[...this.state.list,this.state.inputValue],
                inputValue:""  //正加后input框的值为空
    
            })
        }
    

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

    写完上面的代码,应该就可以实现增加项目了,你可以试着增加一下自己喜欢的服务进去,比如"中药泡脚"…

    解决key值错误

    高兴的同时其实是有一些隐患的,打开浏览器的控制台F12,可以清楚的看到报错了。这个错误的大概意思就是缺少key值。就是在用map循环时,需要设置一个不同的值,这个时React的要求。我们可以暂时用index+item的形式来实现。

      return <li key={index+item}>{item}</li>
    

    技术胖第一博客网站:https://jspang.com/detailed?id=46#toc220

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jason–json

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值