请老师回答代码中的问题

来源:2-9 实现 TodoList 新增删除功能(2)

weixin_慕村1291783

2021-03-10 21:22:47

import React, { ComponentFragment } from "react";


class TodoList extends Component {

  constructor(props) {

    super(props);

    this.state = {

      inputValue: "",

      list: [13123],

    };

  }

  render() {

    return (

      <Fragment>

        <div>

          <input

            value={this.state.inputValue}

            onChange={this.handleChange.bind(this)}

            // onFocus={this.handleFocus.bind(this)}

          ></input>

          <button onClick={this.handleBtn.bind(this)}>提交</button>

        </div>

        <ul>

          {this.state.list.map((itemindex=> {

            return (

              <li key={index} onChange={this.handleDelete.bind(thisindex)}>

                {item}

              </li>

            );

          })}

        </ul>

      </Fragment>

    );

  }


  handleChange(e) {

    this.setState({

      inputValue: e.target.value,

    });

  }

  handleBtn() {

    // console.log(13);

    // let newList = this.state.list;

    // this.setState({

    //   list: newList.push(this.state.inputValue),

    // });


    this.setState({

      list: [...this.state.listthis.state.inputValue],

    });

  }

  handleDelete(index) {

    this.setState({

      list: this.state.list.splice(index1),   //为什么这样写就没办法删除 

    });

  }

}


export default TodoList;



写回答

1回答

好帮手慕夭夭

2021-03-11

同学你好,代码的问题与解答如下:

1、onChange是当输入框内容改变时,才会触发的事件。即这个事件是给input绑定的,而li绑定没有办法触发。这里应该给li绑定点击事件,点击li时删除自身。

http://img.mukewang.com/climg/604986e809c44b0006240094.jpg

2、splice()方法返回被删掉的项目,所以下面的写法就是把删除的项又重新赋值给list了。

http://img.mukewang.com/climg/604984ab0947b29e07080095.jpg

可以看一下效果:

添加一个项111

http://img.mukewang.com/climg/6049873809d35fb702950116.jpg

点击111这一项,整个列表就只有被删除的项了:

http://img.mukewang.com/climg/604987470987c2fc02600081.jpg

3、这里要先删除数组中的某一项,然后再把这个数组重新赋值给list。建议重新定义一个变量,然后把数据赋值给这个变量。因为splice会改变原数组,所以重新定义一个变量,在这个变量上进行操作,不会影响到原数组。

http://img.mukewang.com/climg/6049883609468e8c03920134.jpg

祝学习愉快~



0

0 学习 · 15276 问题

查看课程