@@ -2,54 +2,18 @@ import React, { useReducer, useState } from "react";
2
2
import Header from "../../components/Header/Header" ;
3
3
import InputContainer from "../../components/InputContainer/InputContainer" ;
4
4
import "./TodoList.css" ;
5
-
6
- interface ITodoItem {
7
- text : string ;
8
- id : number ;
9
- done : boolean ;
10
- }
11
-
12
- interface IAction {
13
- type : string ;
14
- payload ?: ITodoItem | number ;
15
- }
16
-
17
- const ADD_TODO = "ADD_TODO" ;
18
- const CHANGE_STATUS = "CHANGE_STATUS" ;
19
-
20
- const todoReducer = ( state : ITodoItem [ ] , action : IAction ) => {
21
- switch ( action . type ) {
22
- case ADD_TODO :
23
- if (
24
- action . payload &&
25
- typeof action . payload !== "number" &&
26
- action . payload . text . trim ( ) !== ""
27
- ) {
28
- return [ ...state , action . payload ] ;
29
- }
30
- case CHANGE_STATUS :
31
- const oldState = [ ...state ] ;
32
- if ( action . payload && typeof action . payload === "number" ) {
33
- const index = oldState . findIndex ( ( ele ) => ele . id === action . payload ) ;
34
- if ( index !== - 1 ) {
35
- oldState [ index ] . done = ! oldState [ index ] . done ;
36
- }
37
- }
38
- return oldState ;
39
- default :
40
- return state ;
41
- }
42
- } ;
5
+ import todoReducer from "../../utils/todoReducer" ;
6
+ import { ADD_TODO , CHANGE_STATUS } from "../../utils/todoActions" ;
43
7
44
8
const TodoList = ( ) => {
45
9
const [ todoList , dispatch ] = useReducer ( todoReducer , [ ] ) ;
46
10
const [ inputTodo , setInputTodo ] = useState < string > ( "" ) ;
47
11
48
- const changeTextHandler = ( event : React . ChangeEvent < HTMLInputElement > ) => {
12
+ const handleChangeText = ( event : React . ChangeEvent < HTMLInputElement > ) => {
49
13
setInputTodo ( event . target . value ) ;
50
14
} ;
51
15
52
- const addTodoItemHandler = ( ) => {
16
+ const handleAddTodoItem = ( ) => {
53
17
dispatch ( {
54
18
type : ADD_TODO ,
55
19
payload : {
@@ -68,10 +32,10 @@ const TodoList = () => {
68
32
< input
69
33
type = "text"
70
34
placeholder = "Search"
71
- onChange = { changeTextHandler }
35
+ onChange = { handleChangeText }
72
36
value = { inputTodo }
73
37
/>
74
- < button onClick = { addTodoItemHandler } > Add</ button >
38
+ < button onClick = { handleAddTodoItem } > Add</ button >
75
39
</ InputContainer >
76
40
{ todoList . length !== 0 && (
77
41
< div className = "status" >
0 commit comments