1- import React , { useState } from 'react'
1+ import { useMutation } from "@apollo/client" ;
2+ import React , { useState } from "react" ;
3+ import { ADD_BOOK , ALL_AUTHORS , ALL_BOOKS } from "../queries" ;
24
35const NewBook = ( props ) => {
4- const [ title , setTitle ] = useState ( '' )
5- const [ author , setAuthor ] = useState ( '' )
6- const [ published , setPublished ] = useState ( '' )
7- const [ genre , setGenre ] = useState ( '' )
8- const [ genres , setGenres ] = useState ( [ ] )
6+ const [ title , setTitle ] = useState ( "" ) ;
7+ const [ author , setAuthor ] = useState ( "" ) ;
8+ const [ published , setPublished ] = useState ( "" ) ;
9+ const [ genre , setGenre ] = useState ( "" ) ;
10+ const [ genres , setGenres ] = useState ( [ ] ) ;
11+ const [ addBook ] = useMutation ( ADD_BOOK ) ;
912
1013 if ( ! props . show ) {
11- return null
14+ return null ;
1215 }
1316
1417 const submit = async ( event ) => {
15- event . preventDefault ( )
16-
17- console . log ( 'add book...' )
18+ event . preventDefault ( ) ;
19+ addBook ( {
20+ variables : {
21+ input : { title, author, published : Number ( published ) , genres } ,
22+ } ,
23+ refetchQueries : [ ALL_BOOKS , ALL_AUTHORS ] ,
24+ } ) ;
25+ console . log ( "add book..." ) ;
1826
19- setTitle ( '' )
20- setPublished ( '' )
21- setAuthor ( '' )
22- setGenres ( [ ] )
23- setGenre ( '' )
24- }
27+ setTitle ( "" ) ;
28+ setPublished ( "" ) ;
29+ setAuthor ( "" ) ;
30+ setGenres ( [ ] ) ;
31+ setGenre ( "" ) ;
32+ } ;
2533
2634 const addGenre = ( ) => {
27- setGenres ( genres . concat ( genre ) )
28- setGenre ( '' )
29- }
35+ setGenres ( genres . concat ( genre ) ) ;
36+ setGenre ( "" ) ;
37+ } ;
3038
3139 return (
3240 < div >
@@ -48,7 +56,7 @@ const NewBook = (props) => {
4856 < div >
4957 published
5058 < input
51- type = ' number'
59+ type = " number"
5260 value = { published }
5361 onChange = { ( { target } ) => setPublished ( target . value ) }
5462 />
@@ -58,15 +66,15 @@ const NewBook = (props) => {
5866 value = { genre }
5967 onChange = { ( { target } ) => setGenre ( target . value ) }
6068 />
61- < button onClick = { addGenre } type = "button" > add genre</ button >
62- </ div >
63- < div >
64- genres: { genres . join ( ' ' ) }
69+ < button onClick = { addGenre } type = "button" >
70+ add genre
71+ </ button >
6572 </ div >
66- < button type = 'submit' > create book</ button >
73+ < div > genres: { genres . join ( " " ) } </ div >
74+ < button type = "submit" > create book</ button >
6775 </ form >
6876 </ div >
69- )
70- }
77+ ) ;
78+ } ;
7179
72- export default NewBook
80+ export default NewBook ;
0 commit comments