У меня проблема с моим кодом. В настоящее время у меня есть некоторые данные, подобные приведенным ниже;
users: [
{
name: 'bolu',
features: ['Tall'],
},
{
name: 'cam',
features: ['Bearded', 'Short'],
},
],
};
То, что я пытаюсь сделать, это удалить/удалить одну функцию, например, если я передам «коротко» в свое действие с сокращением. Я бы хотел, чтобы он («Краткий» текст) был удален из массива функций. В настоящее время у меня настроено действие redux следующим образом:
export interface UsersDataState {
name: string,
features: Array<string>,
}
export interface UsersState {
users: UsersDataState[];
}
const initialState: UsersState = {
users: [],
};
export const usersSlice = createSlice({
name: 'users',
initialState,
reducers: {
removeUser: (state, action: PayloadAction<string>) => {
const removedUsers = state.users.filter((user) => user.features.indexOf(action.payload));
state.users = removedUsers;
},
},
});
Итак, здесь я передаю значение (action.payload
— это передаваемое значение). Когда это действие отправлено, я хочу удалить только переданное слово из массива функций. Я надеюсь, что теперь это более ясно.
Это не работает по какой-то причине, и я не могу понять, почему. Любая помощь будет оценена, пожалуйста, спасибо.
Я голосую за закрытие этого вопроса, потому что это повторение вопроса это было задано только 40 минут назад.
В настоящее время вы фильтруете массив users
, но вы должны фильтровать вложенный массив features
.
Попробуй это
const removedUsers = state.users.map(user => {
return {...user, features: user.features.filter(feature => feature !== action.payload)};
})
Вам нужно скопировать объекты на users
и отфильтровать на features
.
Вот пример:
var users = [{
name: 'bolu',
features: ['Tall'],
}, {
name: 'cam',
features: ['Bearded', 'Short'],
}];
const payload = "Short";
const newUsers = users.map(user => ({ ...user,
features: user.features.filter(f => f != payload)
}));
console.info(newUsers);
Не могли бы вы быть более конкретными? Вы хотите: 1. Удалить функцию, например. «Короткие» от всех пользователей в магазине? 2. Удалить функцию у конкретного пользователя?