1
1
import React , { useState , useEffect } from 'react' ;
2
- import { useDispatch } from 'react-redux' ;
2
+ import { useDispatch , useSelector } from 'react-redux' ;
3
3
import { message , Col , Row } from 'antd' ;
4
4
import { Form , Input , DatePicker , Select } from 'formik-antd' ;
5
5
import { Formik } from 'formik' ;
@@ -23,29 +23,38 @@ const TodoSchema = Yup.object({
23
23
24
24
const TOMORROW = moment ( ) . add ( 1 , 'days' ) ;
25
25
26
- function TodoForm ( { onClose, editMode = false , editableTodoData = { } } ) {
26
+ function TodoForm ( { onClose } ) {
27
27
const dispatch = useDispatch ( ) ;
28
+ const { editTodoData } = useSelector ( ( state ) => state . api ) ;
28
29
const [ dueDate , setDueDate ] = useState ( ) ;
29
30
const [ todoLabel , setTodoLabel ] = useState ( ) ;
30
-
31
- const formInitialValues = {
32
- title : editMode ? editableTodoData . title : undefined ,
33
- description : editMode ? editableTodoData . description : undefined ,
34
- dueDate : editMode ? moment ( editableTodoData . dueDate ) : TOMORROW ,
35
- label : editMode ? editableTodoData . label : 1 ,
36
- } ;
31
+ const [ editMode , setEditMode ] = useState ( false ) ;
32
+ const [ formInitialValues , setFormInitialValues ] = useState ( { } ) ;
37
33
38
34
useEffect ( ( ) => {
39
- if ( ! isEmpty ( editableTodoData ) ) {
40
- setDueDate ( moment ( editableTodoData . dueDate ) ) ;
35
+ if ( ! isEmpty ( editTodoData ) ) {
36
+ setEditMode ( true ) ;
37
+ setDueDate ( moment ( editTodoData . dueDate ) ) ;
38
+ } else {
39
+ setEditMode ( false ) ;
41
40
}
42
- } , [ editableTodoData ] ) ;
41
+ } , [ editTodoData ] ) ;
42
+
43
+ useEffect ( ( ) => {
44
+ const formInitialValues = {
45
+ title : editMode ? editTodoData . title : undefined ,
46
+ description : editMode ? editTodoData . description : undefined ,
47
+ dueDate : editMode ? moment ( editTodoData . dueDate ) : TOMORROW ,
48
+ label : editMode ? editTodoData . label : 1 ,
49
+ } ;
50
+ setFormInitialValues ( formInitialValues ) ;
51
+ } , [ editMode ] ) ;
43
52
44
53
function handleSubmit ( values , { setErrors, resetForm, setSubmitting } ) {
45
54
let url = `todos` ;
46
55
47
56
if ( editMode ) {
48
- url = `${ url } /${ editableTodoData . _id } ` ;
57
+ url = `${ url } /${ editTodoData . _id } ` ;
49
58
}
50
59
51
60
const CREDENTIALS = {
@@ -183,8 +192,6 @@ function TodoForm({ onClose, editMode = false, editableTodoData = {} }) {
183
192
184
193
TodoForm . propTypes = {
185
194
onClose : PropTypes . func . isRequired ,
186
- // editMode: PropTypes.bool.isRequired,
187
- // editableTodoData: PropTypes.object.isRequired,
188
195
} ;
189
196
190
197
export { TodoForm } ;
0 commit comments