Я использую реагировать и next.js для выполнения запроса API (из панели поиска) и отображения списка фильмов на домашней странице, и каждый результат поиска приведет меня на другую страницу, где будут отображаться данные, связанные с этим фильмом. Каждый раз, когда я обновляю страницу сведений, результат запроса теряется, из-за чего делается неправильный запрос API и результаты поиска также теряются при использовании кнопки «назад / вперед».
index.js
<Link href={`/Details?id=${movie.imdbID}`}> //code to take me to the Details page
Details.js
const Details =()=>{
const router = useRouter();
let [result,setResult]=useState({});
const query=router.query.id; //storing the id from the URL
useEffect(() => {
axios.get('http://www.omdbapi.com/?',
{params:{
apikey:'',
i:query,
plot:'full'
}
}).then(response=> setResult(response.data))
}, []);
return <SearchBar />
} export default Details;
также я реализовал компонент Searchbar, который использовал его в index.js, который работает отлично. используйте тот же компонент в файле details.js, чтобы избежать избыточности кода, но я не знаю правильный подход.
index.js
<SearchBar whenSubmit={this.onSearchSubmit}/>
SearchBar.js
onFormSubmit=(event)=>{
event.preventDefault();
this.props.whenSubmit(this.state.term);
}
render(){
<form className="ui form" onSubmit={this.onFormSubmit}>
<input type="text" value={this.state.term} placeholder="search any movie"
onChange={event=>this.setState({term: event.target.value})} />
</form>}