Проблема: Хочу сделать несколько actions ( payload и id )
dispatch({ type: "ADD_MONEY", payload:users.cash + sum ,id:users.id})
После этого в редюсере отрабатывает такой код:
case ADD_MONEY:
return {
users: state.users.map((user) => {
if ( user.id === action.id){
return { ...user, cash: action.payload } as UsersT
}
})
} as defUserState
Но проблема в том , что при срабатывании dispatch экран становится черным ( ошибок в терминале нет )
Полный редюсер:
const ADD_MONEY = 'ADD_MONEY';
interface defAction {
type: string;
payload?: any;
id:number;
}
type UsersT = {
id: number;
name: string;
cash: number;
}
interface defUserState {
users: Array<UsersT>;
}
const defaultUserState: defUserState = {
users: [
{ id: 0, name: "Maxim", cash: 100, },
{ id: 1, name: "Danil", cash: 300, },
{ id: 2, name: "Bogdan", cash: 550, },
]
}
export const UserAccount = (state = defaultUserState, action: defAction): defUserState => {
switch (action.type) {
case ADD_MONEY:
return {
users: state.users.map((user) => {
if ( user.id === action.id){
return { ...user, cash: action.payload } as UsersT
}
})
} as defUserState
default:
return state
}
}
Полная функция:
const addCash = (sum: number) => {
users.map(users => {
if (users.id === SaveIndex) {
SetMoney(users.cash + sum)
dispatch({ type: "ADD_MONEY", payload:users.cash + sum ,id:users.id})
}
return Money
})
}