#reactjs
Вопрос:
App.js
import {BrowserRouter as Router, Switch, Route} from 'react-router-dom'
import Home from './components/Home';
import Navbar from './components/Navbar';
import Game from './components/Game'
import {useState, useEffect} from 'react'
function App() {
const [selectedGame, setSelectedGame] = useState('/')
return (
<div className="App">
<Navbar />
<div className='container'>
<Router>
<Switch>
<Route exact path='/' setSelectedGame={setSelectedGame}> // <----------------
<Home />
</Route>
<Route path={`/games/${selectedGame}`}>
<Game />
</Route>
</Switch>
</Router>
</div>
</div>
);
}
export default App;
Home.js
import axios from 'axios'
import React from 'react'
import { useState, useEffect } from 'react'
import {useHistory} from 'react-router-dom'
const Home = ({setSelectedGame}) => {
const [previews, setPreviews] = useState([])
const [images, setImages] = useState('')
const history = useHistory()
const redirectGame = title => {
setSelectedGame(title) // <-----------------
history.push(`/games/${title}`)
}
return (
<div class="container">
<section class="games">
{previews.map(preview => (
<div class="game">
<div class="game-content">
<div class="thumbnail">
<div class="image-container" onClick={() => redirectGame(preview.title)}>
<img
src={`http://127.0.0.1:8000/api/previews/thumbnail/${preview.id}`} className='cover'
/>
</div>
</div>
</div>
</div>
))}
</section>
</div>
)
}
export default Home
Я пытаюсь сделать следующее: когда пользователь нажимает на контейнер с изображением, он берет заголовок и отправляет его своему родительскому компоненту, который App.js который будет сохранен в выбранном состоянии игры с помощью функции redirectGame (), расположенной в Home.js,до сих пор это работало совершенно нормально … как я могу это исправить?
Комментарии:
1. С какой проблемой вы столкнулись прямо сейчас?
2. Я не могу отправить заголовок, который находится в Home.js к родительскому компоненту App.js
3. просто строка, допустим, название игры-Тетрис, когда пользователь нажимает на нее, мне нужно, чтобы значение «Тетрис» было отправлено App.js
4. Вам нужно перейти
setSelectedGame
к своемуHome
компоненту, а неRoute
.
Ответ №1:
<Route exact path='/' >
<Home setSelectedGame={setSelectedGame} />
</Route>