Я последовал код Дэ Абрамов на https://github.com/tayiorbeii/egghead.io_redux_course_notes/blob/master/08-Reducer_Composition_with_Arrays.mdReact-Redux оператора Spread в редукторе возвращение ошибки «неожиданный маркер»
Я получаю сообщение об ошибке «Неожиданный маркер в строке 22» со ссылкой на ... TODO не думаю, что это связано с настройками Babel, поскольку ... состояние работает нормально. Когда я заменяю ... todo with ... state внутри функции map, он возвращает ту же ошибку.
///Reducer//
export default (state=[], action) => {
switch (action.type) {
case 'ADD_TODO':
return [...state,
{
id:action.id,
text: action.text,
completed:false
}
];
case 'TOGGLE_TODO':
return state.map(todo => {
if (todo.id !== action.id) {
return todo;
}
return {
...todo, //returning error
completed: !todo.completed
};
});
default:
return state;
}
}
Мой код вызова:
it('handles TOGGLE_TODO',() => {
const initialState = [
{
id:0,
text: 'Learn Redux',
completed: false
},
{
id:1,
text: 'Go Shopping',
completed: false
}
];
const action = {
type: 'TOGGLE_TODO',
id: 1
}
const nextstate = reducer(initialState,action)
expect (nextstate).to.eql([
{
id:0,
text: 'Learn Redux',
completed: false
},
{
id:1,
text: 'Go Shopping',
completed: true
}
])
Оператор распространения определяется по-разному для массивов и объектов, поэтому она работает для ... а не ... todos. У вас есть файл .babelrc где угодно? Вам понадобится хотя бы второй этап, чтобы использовать оператор распространения объектов за: https://github.com/sebmarkbage/ecmascript-rest-spread –
У меня не было файла .babelrc. Я создал один, и я установил и добавил плагин «преобразование-объект-отдых-распространение» в файле .babelrc, но затем я вдруг начал получать сообщение об ошибке, что импорт является зарезервированным словом. Итак, я добавил ES2015, предварительно установленный внутри самого .babelrc, и теперь он сработал. Я думал, что у меня уже был ES2015, работающий с тех пор ... состояние работало. Странный... –