Bu proje, Vite ile oluşturulmuş, React ve TypeScript tabanlı bir To-Do (Yapılacaklar Listesi) uygulamasıdır. Uygulamanın state yönetimi için Redux Toolkit kullanılmıştır.
- UI Kütüphanesi: React
- Geliştirme Ortamı: Vite
- Dil: TypeScript
- State Management: Redux Toolkit (
@reduxjs/toolkit,react-redux) - Ikonlar: React Icons (
react-icons) - Styling: Standart CSS (
App.css,src/css/Todo.css)
Uygulama, temel CRUD (Create, Read, Update, Delete) operasyonlarını desteklemektedir:
- Todo Ekleme (Create): Kullanıcılar bir input alanına yeni bir görev girip listeye ekleyebilir.
- Todo Listeleme (Read): Eklenen tüm görevler liste halinde görüntülenir.
- Todo Güncelleme (Update): Her bir görev, "düzenle" butonuna tıklandığında inline olarak (yerinde) güncellenebilir.
- Todo Silme (Delete): Her bir görev, "sil" butonu ile listeden kaldırılabilir.
Proje, state yönetimi için Redux Toolkit'in "slice" yapısını kullanır. Component'ler ve Redux arasındaki akış şu şekildedir:
-
src/redux/store.tsx:configureStorekullanılarak Redux store'u oluşturulur.todoSlice'tan gelentodoReducerburada ana reducer olarak bağlanır.
-
src/redux/todoSlice.tsx:- Uygulamanın ana state mantığı burada yer alır.
createSliceile bir "dilim" oluşturulur. - Initial State:
todos: [](boş bir todo dizisi) olarak tanımlanmıştır. - Reducers:
createTodo: State'e yeni bir todo objesi (action.payload) ekler.removeTodoById:id'siaction.payloadile eşleşen todo'yu listeden filtreler.updateTodo:id'si eşleşen todo'yuaction.payload'daki yeni obje ile değiştirir.
- Uygulamanın ana state mantığı burada yer alır.
-
src/main.tsx:- Uygulamanın giriş noktasıdır.
- Redux
Provider'ı ile tümAppcomponent'ini sararak state'in global olarak erişilebilir olmasını sağlar.
-
src/App.tsx:- Ana layout component'idir.
<TodoCreate />(yeni todo ekleme formu) ve<TodoList />(todo listesi) component'lerini render eder.
-
src/components/TodoCreate.tsx:- Yeni todo metni için bir
useState(newTodo) tutar. useDispatchhook'u ile Redux'a bağlanır.- "Oluştur" butonuna tıklandığında, (boş kontrolü yaptıktan sonra) rastgele bir
idvenewTodoiçeriği ile birpayloadoluşturur vecreateTodoaction'ını dispatch eder.
- Yeni todo metni için bir
-
src/components/TodoList.tsx:useSelectorhook'u ile Redux state'indekitodosdizisine abone olur.todosdizisi üzerindemapişlemi yaparak her bir todo item'ı için bir<Todo />component'i render eder.
-
src/components/Todo.tsx:- Tek bir todo item'ının gösterilmesinden ve yönetilmesinden sorumludur.
todoPropsile todo objesini alır.useDispatchhook'unu kullanır.- "Edit" (düzenleme) modu için
editableadında lokal biruseStatetutar. CiCircleRemove(Sil) ikonuna tıklandığındaremoveTodoByIdaction'ını dispatch eder.CiEdit(Düzenle) ikonuna tıklandığındaeditablestate'initrueyapar ve input gösterir.FaCheck(Onayla) ikonuna tıklandığındaupdateTodoaction'ını yeni içerikle dispatch eder ve "edit" modundan çıkar.
- Gerekli paketleri yükleyin:
npm install
- Projeyi geliştirme modunda başlatın:
npm run dev
- Production build'u almak için:
npm run build