Partage
  • Partager sur Facebook
  • Partager sur Twitter

React Native - Redux - Erreur de syntaxe ?

Problème dans l'éditeur de texte du dernier exercice du chapitre

    18 septembre 2020 à 13:29:14

    Bonjour,

    Je viens d'avoir un soucis de syntaxe JavaScript en essayant de résoudre l'exercice tout en bas de la page du chapitre "Construisez une action sur Redux" du cours "Développez une application mobile React Native".

    Il faut créer son propre Reducer dans un éditeur de texte en ligne. J'ai donc commencé en écrivant un switch, et mon premier case a passé tous les tests sans soucis. Le cas default était déjà présent également. Mais dès que j'ai ajouté d'autres cases, plus aucun test n'est passé.

    J'ai l'impression qu'il s'agit d'une erreur de syntaxe de ma part, mais je n'arrive pas à voir où il y a un problème (ou si c'est l'éditeur qui veut me rendre fou ;) ). J'ai donc remplacé le tout par des if, else if, etc. Et là, tous les tests sont passés. Est-ce que quelqu'un a une idée pourquoi mon switch ne fonctionnait pas ?

    Avec switch :

    const initialState = {
      historicFilms: []
    }
    
    function manageHistoricFilms(state = initialState, action) {
      let nextState
      switch (action.type) {
        case 'TOGGLE_FILMDETAIL' :
          const historicFilmsIndex = state.historicFilms.findIndex(item => item.id === action.value.id)
          if (historicFilmsIndex === -1) {
            nextState = {
              ...state,
              historicFilms: [...state.historicFilms, action.value]
            }
          }
          return nextState || state
          break;
        case 'REMOVE_HISTORIC_FILM' :
          const historicFilmsIndex = state.historicFilms.findIndex(item => item.id === action.value.id)
          if (historicFilmsIndex !== -1) {
            nextState = {
              ...state,
              historicFilms: state.historicFilms.filter( (item, index) => index !== historicFilmsIndex )
            }
          }
          return nextState || state
          break;
        case 'RESET_HISTORIC' :
          nextState = {
            ...state,
            historicFilms: []
          }
          return nextState || state
          break;
        default:
          return state
      }
    
    export default manageHistoricFilms

    Avec if, else if, etc.

    const initialState = {
      historicFilms: []
    }
    
    function manageHistoricFilms(state = initialState, action) {
      let nextState
      if (action.type === 'TOGGLE_FILMDETAIL') {
        const historicFilmsIndex = state.historicFilms.findIndex(item => item.id === action.value.id)
        if (historicFilmsIndex === -1) {
          nextState = {
            ...state,
            historicFilms: [...state.historicFilms, action.value]
          }
        }
        return nextState || state
      } else if (action.type === 'REMOVE_HISTORIC_FILM') {
          const historicFilmsIndex = state.historicFilms.findIndex(item => item.id === action.value.id)
          if (historicFilmsIndex !== -1) {
            nextState = {
              ...state,
              historicFilms: state.historicFilms.filter( (item, index) => index !== historicFilmsIndex )
            }
          }
        return nextState || state
      } else if (action.type === 'RESET_HISTORIC') {
        nextState = {
          ...state,
          historicFilms: []
        }
          return nextState || state
      } else {
          return state
      }
    }
    
    export default manageHistoricFilms

    Merci d'avance !


    -
    Edité par VasteBikini 18 septembre 2020 à 14:00:29

    • Partager sur Facebook
    • Partager sur Twitter

    React Native - Redux - Erreur de syntaxe ?

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown