React + Redux + Babel (SyntaxError в ... неожиданном состоянии) - PullRequest
0 голосов
/ 06 сентября 2018

я пытаюсь повторить пример: https://github.com/reduxjs/redux/tree/master/examples/async/src

Но я использую последние версии React, Redux и Babel (например, React v15.5). В этом примере я ничего не меняю, а затем пытаюсь собрать его с помощью веб-пакета, здесь я получаю SyntaxError:

  22 |     case INVALIDATE_SUBREDDIT:
  23 |       return {
> 24 |         ...state,
     |         ^
  25 |         didInvalidate: true
  26 |       }

В ./reducers/index.js

const posts = (state = {
  isFetching: false,
  didInvalidate: false,
  items: []
}, action) => {
  switch (action.type) {
    case INVALIDATE_SUBREDDIT:
      return {
        ...state,
        didInvalidate: true
      }
    case REQUEST_POSTS:
      return {
        ...state,
        isFetching: true,
        didInvalidate: false
      }
    case RECEIVE_POSTS:
      return {
        ...state,
        isFetching: false,
        didInvalidate: false,
        items: action.posts,
        lastUpdated: action.receivedAt
      }
    default:
      return state
  }
}

Что здесь не так?

UPDATE:

После АдитьяПараб я отвечаю:

npm install --save-dev babel-preset-stage-3

А у тебя в .babelrc

{
    "presets": ["env", "stage-3", "react"]
}

Последняя ошибка исчезла, но я беру еще одну в ./containers/App.js:

  19 |   }
  20 |
> 21 |   handleChange = nextSubreddit => {
     |                ^
  22 |     this.props.dispatch(selectSubreddit(nextSubreddit))
  23 |   }
  24 |

ОБНОВЛЕНИЕ 2:

Прекрасно работает с ним.

{
    "presets": ["env", "stage-3", "react"],
    "plugins": ["transform-object-rest-spread", "transform-decorators-legacy", "transform-class-properties"]
}

Спасибо всем за совет!

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

проблема с предустановкой

первая

npm install --save-dev babel-preset-stage-3

а у вас .babelrc

{
    "presets": ["env", "stage-3", "react"]
}
0 голосов
/ 06 сентября 2018

вы собираетесь объединить объект, поэтому вы должны следовать синтаксису ES6.

Ваш текущий синтаксис неверен.

return {
    ...state,
    didInvalidate: true
  }

должно быть так

return {
    ...state,
    ...{ didInvalidate: true }
  }

замените его на все случаи и попробуйте снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...