помогите найти синтаксическую ошибку switch case
ребят, помогите найти ошибку, редактор подсвечивает код в switch
const usersReducer = (state = initialState, action) => {
switch (action.type) {
case FOLLOW:
let stateCopy = {
...state,
users: state.users.map(u => {
if (u.id === action.userId) {
return { ...u, followed: true };
}
return u;
}),
};
default:
return state;
}
};
Ответы (2 шт):
Автор решения: Макс к
→ Ссылка
Среда разработки, должна показать, что не хватает break перед default.
const usersReducer = (state = initialState, action) => {
switch (action.type) {
case FOLLOW:
let stateCopy = {
...state,
users: state.users.map(u => {
if (u.id === action.userId) {
return { ...u, followed: true };
}
return u;
}),
};
break;
default:
return state;
}
};
Автор решения: Oleksandr
→ Ссылка
Проблема в том что case или должен остановиться (break нужен если ничего не возвращаем) или что-то вернуть (return если. нужно обновить state) у вас нет ни того ни друго-го.
Вы создали копию состояния, но вы не вернули его рудюсеру.
const usersReducer = (state = initialState, action) => {
switch (action.type) {
case FOLLOW:
let stateCopy = {
...state,
users: state.users.map(u => {
if (u.id === action.userId) {
return { ...u, followed: true };
}
return u;
}),
};
return stateCopy;
default:
return state;
}
};
Или более лаконичный вариант:
const usersReducer = (state = initialState, action) => {
switch (action.type) {
case FOLLOW: {
return {
...state,
users: state.users.map(u => u.id === action.userId ? { ...u, followed: true } : u),
};
}
default:
return state;
}
};