diff --git a/webclient/src/Search.js b/webclient/src/Search.js index 80396c0..5e36cc4 100644 --- a/webclient/src/Search.js +++ b/webclient/src/Search.js @@ -1,51 +1,46 @@ -import React, { Component } from 'react'; -import { withRouter } from 'react-router-dom'; +import React, { useState, useRef } from 'react'; +import { useHistory, useLocation } from 'react-router-dom'; import queryString from 'query-string'; -const getSearch = props => queryString.parse(props.location.search).q; +const getSearch = location => queryString.parse(location.search).q || ''; -class Search extends Component { - constructor(props) { - super(props); +function Search() { + const history = useHistory(); + const location = useLocation(); - this.state = {search: getSearch(this.props)}; - this.inputRef = React.createRef(); - } + const [search, setSearch] = useState(getSearch(location)); + const inputRef = useRef(null); - searchArticles = (event) => { - const search = event.target.value; - this.setState({search: search}); - if (search.length >= 3) { - const searchQuery = queryString.stringify({ 'q': search }); - this.props.history.replace('/search?' + searchQuery); + const searchArticles = (event) => { + const newSearch = event.target.value; + setSearch(newSearch); + if (newSearch.length >= 3) { + const searchQuery = queryString.stringify({ 'q': newSearch }); + history.replace('/search?' + searchQuery); } else { - this.props.history.replace('/'); + history.replace('/'); } } - searchAgain = (event) => { + const searchAgain = (event) => { event.preventDefault(); const searchString = queryString.stringify({ 'q': event.target[0].value }); - this.props.history.push('/search?' + searchString); - this.inputRef.current.blur(); + history.push('/search?' + searchString); + inputRef.current.blur(); } - render() { - const search = this.state.search; - - return ( - -
- -
-
- ); - } + return ( + +
+ +
+
+ ); } -export default withRouter(Search); +export default Search;