From e4919f09ba0127b96cc9b9cfbfa2741de173acb6 Mon Sep 17 00:00:00 2001 From: Olesia_Serban Date: Tue, 28 Dec 2021 16:12:29 +0200 Subject: [PATCH 1/2] task-7: use formik --- package.json | 3 +- src/components/UpsertMovieModal.js | 103 +++++++++++++++++++---------- 2 files changed, 70 insertions(+), 36 deletions(-) diff --git a/package.json b/package.json index 082f1e6..8f2ebd0 100644 --- a/package.json +++ b/package.json @@ -14,12 +14,11 @@ "author": "Olesia Serban", "license": "ISC", "dependencies": { - "@fortawesome/react-fontawesome": "^0.1.16", "axios": "^0.24.0", "font-awesome": "^4.7.0", + "formik": "^2.2.9", "react": "^17.0.2", "react-dom": "^17.0.2", - "react-hook-form": "^7.21.0", "react-redux": "^7.2.6", "redux": "^4.1.2", "redux-thunk": "^2.4.1" diff --git a/src/components/UpsertMovieModal.js b/src/components/UpsertMovieModal.js index 24beb60..3639736 100644 --- a/src/components/UpsertMovieModal.js +++ b/src/components/UpsertMovieModal.js @@ -1,10 +1,10 @@ import "./UpsertMovieModal.css"; import React from "react"; -import { useForm } from "react-hook-form"; import GenresRepo from "../services/GenreRepo"; import { useDispatch } from "react-redux"; import { bindActionCreators } from "redux"; import { actionCreators } from "../store"; +import { useFormik } from "formik"; export default function UpsertMovieModal({header, movie, handleCloseModal}){ @@ -14,18 +14,27 @@ export default function UpsertMovieModal({header, movie, handleCloseModal}){ const genreRepo = new GenresRepo(); const genres = genreRepo.getAllGenres(); - - const { register, handleSubmit } = useForm(); - const onSubmit = (data, e) => { - if (movie === undefined){ - handleCreate(data); - } else { - handleUpdate(movie, data); - } + const defaultFormData = {} - handleCloseModal(); - }; - const onError = (errors, e) => console.log(errors, e); + if(movie !== undefined) { + defaultFormData.title = movie.title; + defaultFormData.url = movie.poster_path; + defaultFormData.rating = movie.vote_average; + defaultFormData.runtime = movie.runtime; + defaultFormData.overview = movie.overview; + } + + const formik = useFormik({ + initialValues: defaultFormData, + onSubmit: values => { + if (movie === undefined){ + handleCreate(values); + } else { + handleUpdate(movie, values); + } + handleCloseModal(); + } + }) const handleUpdate = (movie, formData)=>{ if(formData.title){ @@ -64,58 +73,85 @@ export default function UpsertMovieModal({header, movie, handleCloseModal}){ newMovie.overview = formData.overview; createMovie(newMovie) }; - - const defaultFormData = {} - - if(movie !== undefined) { - defaultFormData.title = movie.title; - defaultFormData.url = movie.poster_path; - defaultFormData.rating = movie.vote_average; - defaultFormData.runtime = movie.runtime; - defaultFormData.overview = movie.overview; - } + return ( <>

{header}

-
+
- +
- +
- + + {genres.map((genre) => + + )}
- +
- +
- +
-