I am building up an app that enables users to look at the information of movies to study React.
I have a component named BoxOffice
that has several useState
. One of the useState
is const [movieDetailPage, setMovieDetailPage]
.
I pass setMovieDetailPage
as the property onClick
of the component Movie
In the component Movie
, I assign the setMovieDetailPage
as an onClick
event of a div
.
When I click the div
for the first time, it returns me the default value 0 well. But when I click it the second time, it does not return me anything.
Here are my codes:
BoxOffice.js
import { useEffect, useState } from 'react'
import Movie from '../Movie/Movie'
import BoxOfficeButton from '../BoxOfficeButton/BoxOfficeButton'
import styles from './BoxOfficeStyles'
let data;
function BoxOffice(props) {
const [containerValue, setContainerValue] = useState(5)
const [containerValueLimit, setContainerValueLimit] = useState(0)
const [movieDetailPage, setMovieDetailPage] = useState(0)
try {
data = Array.from(JSON.parse(props.data))
data = data.map(JSON.parse)
return (
<>
<div style={styles}>
<BoxOfficeButton value={containerValue} valueLimit={data.length} type='left'/>
{data.slice(containerValue-5, containerValue).map((movieInfo) => <Movie info={movieInfo} onClick={setMovieDetailPage} />)}
<BoxOfficeButton value={containerValue} valueLimit={data.length} type='right'/>
</div>
</>
)
}
catch {
return <div style={styles}></div>
}
}
export default BoxOffice
Movie.js
import styles from './MovieStyles'
function Movie(props) {
function handleClick() {
const setMovieDetailPage = props.onClick
setMovieDetailPage((prev) => {
if (prev == 0) {
console.log(prev)
}
})
}
try {
return (
<div style={styles} onClick={() => handleClick()}>
<div>{props.info.title}</div>
</div>
)
}
catch {
return (
<div style={styles}></div>
)
}
}
export default Movie
Why does it work only once? What is the possible issue here?