Maison > interface Web > Questions et réponses frontales > Comment changer un élément dans un tableau en réaction

Comment changer un élément dans un tableau en réaction

藏色散人
Libérer: 2022-12-29 09:37:56
original
3291 Les gens l'ont consulté

Comment modifier un élément dans le tableau dans React : 1. Affichez le composant parent App et le composant enfant ToDoList ; 2. Parcourez le composant enfant pour afficher le tableau ToDoList du composant parent et laissez les deux boutons obtenir le identifiant de l'élément de tableau correspondant ;3. Modifiez la valeur complétée de l'élément de tableau correspondant via l'identifiant transmis par le sous-composant.

Comment changer un élément dans un tableau en réaction

L'environnement d'exploitation de ce tutoriel : système Windows 10, React version 18.0.0, ordinateur Dell G3.

Comment changer un élément dans un tableau en réaction ? Comment changer l'élément de tableau correspondant via id ?

React modifie l'élément de tableau correspondant via id :

1 Il y a deux composants ici, le composant parent App et le sous-composant ToDoList, et l'identifiant transmis dans le sous. -component ToDoList est modifié Le contenu des éléments du tableau dans le composant parent App.

1.1 Le composant parent App a un tableau nommé ToDoList, et le code est le suivant :

  this.state = {
       ToDoList:[
         {
           id:1,
           title:'吃饭',
           completed:true
         },
         {
          id:2,
          title:'睡觉',
          completed:false
        },
        {
          id:3,
          title:'学习',
          completed:true
        }
       ]
    }
Copier après la connexion

1.2 Nous passons une méthode du composant parent App au sous-composant ToDoList, et la méthode est nommée changeCompleted. Dans le même temps, le tableau ToDoList du composant parent est également transmis.

    <ToDoList
       ToDoList={this.state.ToDoList} 
       changeTitle={this.changeCompleted}
   listDelete={this.listDelete}
       >
       </ToDoList>
Copier après la connexion

1.3 Affichez le tableau ToDoList du composant parent dans une boucle dans le composant enfant et laissez les deux boutons obtenir l'identifiant de l'élément de tableau correspondant.

import React, { Component } from &#39;react&#39;
import &#39;./ToDoList.css&#39;
export default class ToDoList extends Component {
    render() {
        return (
            <div className=&#39;ToDoList&#39;>
                <ul>
                    {
                        this.props.ToDoList.map((item)=>{
                        return <li key={item.id}>
                            {item.title}
                            <p>{item.completed?&#39;已完成&#39;:&#39;未完成&#39;}</p>
                            <div>
                            //根据id改变父组件中ToDoList数组的数组元素的Completed的值
                            <button className=&#39;btn1&#39; id={item.id} onClick={this.changeCompleted}>切换状态</button>
                            //根据id删除父组件中ToDoList数组的数组元素
                            <button className=&#39;btn2&#39; id={item.id} onClick={this.listDelete}>删除</button>
                            </div>
                          </li>
                        })
                    }
                </ul>
              
            </div>
        )
    }
    listDelete=(e)=>{
        this.props.listDelete(e.target.id)
    }
    changeCompleted=(e)=>{
        this.props.changeCompleted(e.target.id)
    }
}
Copier après la connexion

2. Le bouton du composant enfant déclenche l'événement changeCompleted du composant parent et apporte la valeur id de l'élément du tableau correspondant au bouton du composant enfant, qui sert à modifier la valeur terminée dans le tableau id correspondant. élément.

  changeCompleted=(id1)=>{
    // 传过来的id不是数字类型,这里进行强制转换,不然下面的if语句无法判断
    const id2=Number(id1)
    //map遍历的数组元素是对象的话,会修改原数组的值,也就是会修改this.state的值,这之前建议深拷贝原数组再操作,个人浅见。
    //最简单的深拷贝(JSON.stringify() 和JSON.parse())
    //先把对象使用JSON.stringify()转为字符串,再赋值给另外一个变量,然后使用JSON.parse()转回来即可。
    //深拷贝
    const ToDoList1 = JSON.parse( JSON.stringify([...this.state.ToDoList]))
    this.setState({
      //将拷贝的数组展开每一项,对每一项的id和传过来的id2进行对比,如果和传过来的id相同,说明
      //找到了需要修改的哪一项,然后将那一项的completed取反即可。
      ToDoList:ToDoList1.map((item)=>{
        if(item.id===id2){
          item.completed = !item.completed
        }
        //id不同就直接返回原来的值不修改,无论修改与否的的值都在这里返回
        return item
      })
    })
  }
Copier après la connexion

2.1 Ici, la valeur complétée de l'élément du tableau correspondant est modifiée avec succès via l'identifiant transmis par le sous-composant, afin qu'elle puisse être basculée entre vrai et faux.

Apprentissage recommandé : "Tutoriel vidéo React"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal