From 7b00e119b6ed79d01c7bc59ce4d1ae0663e0bc7d Mon Sep 17 00:00:00 2001 From: Vincent Seyller <vseyller@laposte.net> Date: Mon, 18 Jan 2021 13:22:41 +0100 Subject: [PATCH] Avancement --- tp/tp4/src/Item.js | 17 ++++++++++------- tp/tp4/src/Lists.js | 30 +++++++++++++++++++----------- tp/tp4/src/TP4.js | 32 +++++++++++++++----------------- 3 files changed, 44 insertions(+), 35 deletions(-) diff --git a/tp/tp4/src/Item.js b/tp/tp4/src/Item.js index 6f989dffd..8381b3dca 100644 --- a/tp/tp4/src/Item.js +++ b/tp/tp4/src/Item.js @@ -4,7 +4,8 @@ import {useState} from 'react'; let Item = () => { const queryCache = useQueryCache(); - let id = useParams().id; + let id = parseInt(useParams().id); + let fetchItems = async () =>{ let token = window.localStorage.getItem('token'); let res = await fetch("http://localhost:4200/list/" + id + "/items", { @@ -32,8 +33,7 @@ let Item = () => { headers: { 'Authorization': 'Bearer ' + window.localStorage.getItem('token'), 'Content-Type': 'application/json' - }, - body: JSON.stringify(item) + } }); } @@ -58,11 +58,14 @@ let Item = () => { onSuccess: () => {queryCache.invalidateQueries('Items')} }); + let lists = queryCache.getQueryData('Lists'); + let list = lists.find(l => l.id === id); + return <div> - <h1>Items of list</h1> - {status ==='loading' && (<div>Loading data...</div>)} - {status ==='error' && (<div>Error fetching data</div>)} - {status ==='success' && ( + <h1>Items of list {list.title}</h1> + {status === 'loading' && (<div>Loading data...</div>)} + {status === 'error' && (<div>Error fetching data</div>)} + {status === 'success' && ( <div> <ul> {data.map((item, idx) => { diff --git a/tp/tp4/src/Lists.js b/tp/tp4/src/Lists.js index e4dfe3ab9..71ef779d1 100644 --- a/tp/tp4/src/Lists.js +++ b/tp/tp4/src/Lists.js @@ -1,6 +1,7 @@ import {useQuery, useMutation, useQueryCache} from 'react-query'; import {useState} from 'react'; -import {useHistory} from 'react-router-dom'; +import {Route, useHistory} from 'react-router-dom'; +import Item from './Item' let Lists = () => { @@ -66,16 +67,23 @@ let Lists = () => { {status ==='error' && (<div>Error fetching data</div>)} {status ==='success' && ( <div> - <ul> - {data.map((list, idx) => { - return <li key={idx}> - {list.title} - <button onClick={() => history.push("/list/" + list.id)}>Details</button> - <button onClick={() => mutationDelete(list)}>Remove</button> - </li> - })} - </ul> - <AddListForm /> + <Route path='/lists' exact> + <div> + <ul> + {data.map((list, idx) => { + return <li key={idx}> + {list.title} + <button onClick={() => history.push("/list/" + list.id)}>Details</button> + <button onClick={() => mutationDelete(list)}>Remove</button> + </li> + })} + </ul> + <AddListForm /> + </div> + </Route> + <Route path='/list/:id'> + <Item /> + </Route> </div> )} </div>; diff --git a/tp/tp4/src/TP4.js b/tp/tp4/src/TP4.js index 2227607ef..48cb1acaf 100644 --- a/tp/tp4/src/TP4.js +++ b/tp/tp4/src/TP4.js @@ -5,12 +5,12 @@ import { useHistory } from 'react-router-dom'; -import {useEffect, useState} from 'react'; +import {useEffect, useState, lazy, Suspense} from 'react'; import Signin from './Signin' import Signup from './Signup' -import Lists from './Lists' -import Item from './Item' + +const Lists = lazy(() => import('./Lists')); let TP4 = () => { let history = useHistory(); @@ -106,20 +106,18 @@ let TP4 = () => { } </ul> </nav> - <Switch> - <Route path='/signin'> - <Signin signin={signin}/> - </Route> - <Route path='/signup'> - <Signup signup={signup}/> - </Route> - <Route path='/lists'> - <Lists /> - </Route> - <Route path='/list/:id'> - <Item /> - </Route> - </Switch> + + <Switch> + <Route path='/signin'> + <Signin signin={signin}/> + </Route> + <Route path='/signup'> + <Signup signup={signup}/> + </Route> + <Suspense fallback={<div>Loading...</div>}> + <Lists /> + </Suspense> + </Switch> </div> } </div> -- GitLab