質問編集履歴

3

デバッグ用のlog出力を削除

2021/01/03 05:43

投稿

toshiki_
toshiki_

スコア11

test CHANGED
File without changes
test CHANGED
@@ -354,8 +354,6 @@
354
354
 
355
355
  useEffect(() => {
356
356
 
357
- console.log('useEffect')
358
-
359
357
  axios({
360
358
 
361
359
  method: 'get',

2

パスパラメータの実装例を追加

2021/01/03 05:43

投稿

toshiki_
toshiki_

スコア11

test CHANGED
File without changes
test CHANGED
@@ -257,3 +257,159 @@
257
257
  [Reactがrenderの内容を更新してくれなくてハマった](https://y-nakajo.hatenablog.com/entry/2017/12/30/033546)
258
258
 
259
259
  [react-router 同ページ内で再描画されない解決メモ](https://qiita.com/yasuken/items/c7864f90101102ce4943)
260
+
261
+
262
+
263
+
264
+
265
+ ### (修正)パスパラメータを利用した形に修正
266
+
267
+ #### App.js
268
+
269
+ ```javascript
270
+
271
+ import Dog from './Dog';
272
+
273
+
274
+
275
+ import {
276
+
277
+ BrowserRouter as Router,
278
+
279
+ Switch,
280
+
281
+ Route,
282
+
283
+ Link
284
+
285
+ } from "react-router-dom";
286
+
287
+
288
+
289
+ const App = () => {
290
+
291
+
292
+
293
+ return (
294
+
295
+ <Router>
296
+
297
+ <Switch>
298
+
299
+
300
+
301
+ <Route exact path="/">
302
+
303
+ <Dog />
304
+
305
+ </Route>
306
+
307
+
308
+
309
+ <Route path="/page:pageNum">
310
+
311
+ <Dog />
312
+
313
+ </Route>
314
+
315
+
316
+
317
+ </Switch>
318
+
319
+ </Router>
320
+
321
+ );
322
+
323
+ }
324
+
325
+
326
+
327
+ export default App;
328
+
329
+ ```
330
+
331
+
332
+
333
+ #### Dog.js
334
+
335
+ ```javascript
336
+
337
+ import { useEffect, useState } from 'react'
338
+
339
+ import { Link, useHistory, useParams } from 'react-router-dom';
340
+
341
+
342
+
343
+ import axios from 'axios'
344
+
345
+
346
+
347
+ const Dog = () => {
348
+
349
+
350
+
351
+ const [ imageUrl, setImageUrl ] = useState('')
352
+
353
+
354
+
355
+ useEffect(() => {
356
+
357
+ console.log('useEffect')
358
+
359
+ axios({
360
+
361
+ method: 'get',
362
+
363
+ url: 'https://dog.ceo/api/breeds/image/random'
364
+
365
+ }).then(response => {
366
+
367
+ setImageUrl(response['data']['message'])
368
+
369
+ })
370
+
371
+ }, [])
372
+
373
+
374
+
375
+ let { pageNum } = useParams();
376
+
377
+ if (typeof pageNum === 'undefined') {
378
+
379
+ pageNum = 1
380
+
381
+ }
382
+
383
+
384
+
385
+ return (
386
+
387
+ <>
388
+
389
+ <h1>Dog image</h1>
390
+
391
+ <h2>{ pageNum }ページ目</h2>
392
+
393
+ <img src={ imageUrl } alt='dog'/>
394
+
395
+ <p>{ imageUrl }</p>
396
+
397
+ <ul>
398
+
399
+ <li><Link to='/'>Top</Link></li>
400
+
401
+ <li><Link to='/page2'>Next</Link></li>
402
+
403
+ </ul>
404
+
405
+ </>
406
+
407
+ )
408
+
409
+ }
410
+
411
+
412
+
413
+ export default Dog
414
+
415
+ ```

1

タイトルを修正

2021/01/03 05:42

投稿

toshiki_
toshiki_

スコア11

test CHANGED
@@ -1 +1 @@
1
- React Routerでクエリストリングが付与された際に画面遷移したい
1
+ React Routerでクエリストリングが付与された際に再描(レンダリング)したい
test CHANGED
File without changes