Cześć,
mam pytanie ponieważ mam problem podczas tworzenia aplikacji. Chciałbym edytować pojedynczą listę w aplikacji budżetowej,
ale nie mam pojęcia w jaki sposób mogę to zrobić i potrzebuje wskazówki.
// ExpenseItem
import React, { useContext } from 'react';
import { TiDelete } from 'react-icons/ti';
import { TiPencil } from 'react-icons/ti';
import { AppContext } from '../context/AppContext';
const ExpenseItem = (props) => {
const { dispatch } = useContext(AppContext);
const handleDeleteExpense = () => {
dispatch({
type: 'DELETE_EXPENSE',
payload: props.id,
})
}
const handleEditExpense = () => {
dispatch({
type: 'EDIT_EXPENSE',
payload: props.id,
})
}
return (
<li className='list-group-item d-flex justify-content-between align-items-center mt-4 me-4'>
{props.name}
<div>
<span className='badge bg-primary badge-pill me-4'>
${props.cost}
</span>
<TiPencil className='me-2' size='1.5em' onClick={handleEditExpense}></TiPencil>
<TiDelete size='1.5em' onClick={handleDeleteExpense}></TiDelete>
</div>
</li>
)
};
export default ExpenseItem;
// AppContext
import { createContext, useReducer } from "react";
const AppReducer = (state, action) => {
switch(action.type){
case 'ADD_EXPENSE':
return {
...state,
expenses: [...state.expenses, action.payload],
}
case 'ADD_INCOME':
return {
...state,
incomes: [...state.incomes, action.payload],
}
case 'DELETE_EXPENSE':
return {
...state,
expenses: state.expenses.filter((expense) => expense.id !== action.payload)
}
case 'DELETE_INCOME':
return {
...state,
incomes: state.incomes.filter((incomes) => incomes.id !== action.payload)
}
case 'EDIT_EXPENSE':
return {
}
default:
return state;
}
}
const initailState = {
budget: 0,
expenses: [
// { id: 2, name: 'shopping', cost: 40 },
],
incomes: [
],
};
export const AppContext = createContext();
export const AppProvider = (props) => {
const [state, dispatch] = useReducer(AppReducer, initailState);
return (
<AppContext.Provider value={{
budget: state.budget,
expenses: state.expenses,
incomes: state.incomes,
dispatch,
}}
>
{props.children}
</AppContext.Provider>)
}
Jeśli ktoś będzie chciał to podam również link do repozytorium.
Z góry dziękuję za pomoc.