From 36a564498b5e7fd513c76ca0547929bfe263bc9f Mon Sep 17 00:00:00 2001 From: mrfry Date: Sat, 7 Nov 2020 08:58:37 +0100 Subject: [PATCH] Search term in query for all questions --- src/pages/_app.js | 4 ++-- src/pages/allQuestions.js | 31 ++++++++++++++++++------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/pages/_app.js b/src/pages/_app.js index a594dc7..76ddcde 100644 --- a/src/pages/_app.js +++ b/src/pages/_app.js @@ -3,10 +3,10 @@ import '../defaultStyles.css' import Layout from '../components/layout' -function MyApp ({ Component, pageProps, router }) { +function MyApp({ Component, pageProps, router }) { return ( - + ) } diff --git a/src/pages/allQuestions.js b/src/pages/allQuestions.js index d2995c8..97ca759 100644 --- a/src/pages/allQuestions.js +++ b/src/pages/allQuestions.js @@ -1,4 +1,5 @@ import React, { useState, useEffect } from 'react' +import Link from 'next/link' import fetch from 'unfetch' import LoadingIndicator from '../components/LoadingIndicator.js' @@ -7,13 +8,13 @@ import QuestionSearchResult from '../components/QuestionSearchResult.js' import styles from './allQuestions.module.css' import constants from '../constants.json' -export default function AllQuestions (props) { +export default function AllQuestions({ router }) { const [data, setData] = useState(null) const [searchTerm, setSearchTerm] = useState('') useEffect(() => { fetch(`${constants.apiUrl}data.json`, { - credentials: 'include' + credentials: 'include', }) .then((resp) => { return resp.json() @@ -21,6 +22,7 @@ export default function AllQuestions (props) { .then((data) => { setData(data) }) + setSearchTerm(router.query.q ? decodeURIComponent(router.query.q) : '') }, []) if (data) { @@ -28,11 +30,19 @@ export default function AllQuestions (props) {
{ setSearchTerm(e.target.value) }} + onChange={(e) => { + setSearchTerm(e.target.value) + router.replace( + `${router.pathname}${e.target.value && + '?q='}${encodeURIComponent(e.target.value)}`, + undefined, + { shallow: true } + ) + }} />

- +
) } else { - return ( - - ) + return } }