Je suis nouveau pour réagir et seulement comprendre les bases. J'ai eu ce projet de quelqu'un à regarder, mais je me gratte ma tête depuis le matin avec ce problème:
import React, { useState, Component } from 'react';
import './App.css';
import Person from './Person/Person';
import person from './Person/Person';
import { render } from '@testing-library/react';
class App extends Component {
state =
{
persons:[
{id: '123', name:'Max', age: 28 },
{id: '124',name:'Mari', age: 26 },
{id: '125',name: 'laly', age: 20 }
],
showPersons: false
}
nameChangeHandler=( event,id ) =>
{ const personIndex = this.state.persons.findIndex(p=>{
return p.id === id;
});
const person = {...this.state.persons[personIndex]
};
person.name=event.target.value;
const persons=[ ...this.state.persons];
persons[personIndex]=person;
this.setState(
{
persons:person
}
)
}
togglePersonHandler = ()=>
{
const doesShow = this.state.showPersons;
this.setState ({showPersons: !doesShow});
}
deletePersonHandler= (personIndex)=> {
//const persons = this.state.persons;
const persons = [...this.state.persons]
persons.splice(personIndex,1);
this.setState({persons:persons});
}
render()
{
const style ={
backgroundColor:'yellow',
font:'inherit',
border:'1px solid blue',
padding:'8px',
cursor:'pointer'
};
let persons=null;
if (this.state.showPersons){
persons= (
<div>
{this.state.persons.map((person,index)=> {return <Person click={() => this.deletePersonHandler(index)}
name = {person.name}
age = {person.age}
key={person.id}
change ={(event) => this.nameChangeHandler(event,person.id)}
/>
})};
</div>)
};
return (
<div className="App">
<h1>Hi This is react App</h1>
<button style={style} onClick={this.togglePersonHandler}> Toggle Persons</button>
{persons}
</div>
);
}
}
export default App;
4 Réponses :
erreur est ici:
nameChangeHandler=( event,id ) =>
{ const personIndex = this.state.persons.findIndex(p=>{
return p.id === id;
});
const person = {...this.state.persons[personIndex]
};
person.name=event.target.value;
const persons=[ ...this.state.persons];
persons[personIndex]=person;
this.setState(
{
persons:person ------------ > You are assigning a single object to a list in your state, so your map is giving an error, it must be {persons: persons}
}
)
}
Chaque fois que vous voyez Dans ce cas, vous utilisez L'appel de la fonction: p>
Le tableau Vous devez faire attention à IS ___ n'est pas une fonction code>, essayez de regarder quelle que soit la fonction se référant à. p>
mapper code>, qui est une fonction de tableau. Vous devez donc vérifier si le tableau (la chose à gauche du point) est en fait un tableau. P>
this.state.persons.map code> p>
Personnes Code>. Alors essayez de rechercher la place dans le code où personnes code> ne reçoit pas un tableau. P>
Vous avez une faute de frappe ici, vous vous attribuez et objectez à l'état à la place d'un tableau. Dans le Funcion avec une console simple à l'intérieur du rendu ou juste la regarder dans le menu des composants dans le navigateur, vous pouvez le remarquer bro. p>
Cela se produit probablement ici, où vous remplacez la matrice de personnes avec une seule personne:
this.setState({persons});
Dans
NamechangeHandler code>, vous avez une faute de frappe. Il devrait êtrethis.setstate ({personnes: personnes}) code> avec unsupplémentaire code>. Ou justethis.setstate ({personnes}) code> pour utiliser le raccourci