Objets
Les objets sont des collections de paires clé-valeur. En React, les props et le state sont des objets !
Création et accès
javascript
const user = {
name: 'Alice',
age: 25,
email: 'alice@example.com'
};
// Notation point
console.log(user.name); // 'Alice'
// Notation crochet
console.log(user['age']); // 25
// Modification
user.age = 26;
// Ajout de propriété
user.city = 'Paris';
Méthodes utiles
javascript
const user = { name: 'Alice', age: 25 };
// Toutes les clés
Object.keys(user); // ['name', 'age']
// Toutes les valeurs
Object.values(user); // ['Alice', 25]
// Paires clé-valeur
Object.entries(user);
// [['name', 'Alice'], ['age', 25]]
En React
Les props et le state sont des objets ! Vous les manipulerez constamment.
javascript
// Props d'un composant
const UserCard = ({ name, age, email }) => {
return <div>{name} - {age} ans</div>;
};
// State (Séance 3)
const [user, setUser] = useState({ name: 'Alice', age: 25 });
Objets imbriqués
javascript
const user = {
name: 'Alice',
address: {
city: 'Paris',
country: 'France',
zip: '75001'
},
hobbies: ['lecture', 'sport']
};
console.log(user.address.city); // 'Paris'
console.log(user.hobbies[0]); // 'lecture'
Propriétés calculées
javascript
const key = 'name';
const value = 'Alice';
const user = {
[key]: value,
[`${key}Upper`]: value.toUpperCase()
};
console.log(user);
// { name: 'Alice', nameUpper: 'ALICE' }
Méthode raccourcie
javascript
const name = 'Alice';
const age = 25;
// Avant ES6
const user = { name: name, age: age };
// Avec ES6 ✨
const user = { name, age };
console.log(user); // { name: 'Alice', age: 25 }
Méthodes d'objet
javascript
const calculator = {
value: 0,
add(n) {
this.value += n;
return this;
},
multiply(n) {
this.value *= n;
return this;
},
getValue() {
return this.value;
}
};
calculator.add(5).multiply(2).getValue(); // 10
Astuce
En React, vous utiliserez rarement this car nous travaillons avec des composants fonctionnels plutôt que des classes.
Vérifier l'existence d'une propriété
javascript
const user = { name: 'Alice', age: 25 };
// Avec in
'name' in user; // true
'email' in user; // false
// Avec hasOwnProperty
user.hasOwnProperty('name'); // true
user.hasOwnProperty('email'); // false
// Vérification simple (attention aux valeurs falsy)
if (user.name) {
console.log('Le nom existe');
}
Copier un objet (shallow copy)
javascript
const user = { name: 'Alice', age: 25 };
// Object.assign
const copy1 = Object.assign({}, user);
// Spread operator (recommandé, voir page suivante)
const copy2 = { ...user };
console.log(copy1); // { name: 'Alice', age: 25 }
console.log(copy2); // { name: 'Alice', age: 25 }
Attention
Ces méthodes font une copie superficielle (shallow copy). Les objets imbriqués sont toujours partagés par référence !
javascript
const user = {
name: 'Alice',
address: { city: 'Paris' }
};
const copy = { ...user };
copy.address.city = 'Lyon';
console.log(user.address.city); // 'Lyon' (modifié aussi!)