3

quelqu'un peut-il me donner le meilleur moyen de supprimer la propriété d'un objet en utilisant la déstructuration? Je veux supprimer la tâche unique de l'objet ci-dessousComment faire l'interpolation de chaîne dans l'opération de repos

Object {task111: Object, task113: Object, task114: Object} 

const taskId = `task${action.task.id}`; 
{ [taskId]: discard, ...newState } = state; 
return newState; 

Erreur:

./src/reducers/taskReducer.js 
Syntax error: Unexpected token, expected ; (32:13) 

    30 |  
    31 |   const taskId = `task${action.task.id}` 
> 32 |   { [taskId]: discard, ...newState } = state; 
    |     ^
    33 |   return newState 
    34 | 

Répondre

4

Vous utilisez computed property name, et non l'interpolation de chaîne, et vous devez affecter la valeur de la propriété à une variable pour que cela fonctionne.

const state = {task111: { a: 1 }, task113: { b: 2 }, task114: { c: 3 }}; 
 

 
const action = { 
 
    task: { 
 
    id: 113 
 
    } 
 
}; 
 

 
const taskId = `task${action.task.id}`; 
 

 
const { [taskId]: discard, ...newState } = state; 
 

 
console.log(newState);

+0

Cela ne semble pas fonctionner pour les objets imbriqués, pas sûr cependant. – loganathan

+0

Votre question n'inclut aucun changement d'objet imbriqué. Vous supprimez simplement une propriété, dont la valeur est un objet. J'ai mis à jour l'exemple pour refléter le code dans la question. –

+0

Merci ça a marché – loganathan