export const App = () => {
const [layout, handleChangeLayout] = useState(LayoutType.DESKTOP);
return (
<React.Fragment>
<Header>
{PAGE_TITLE}
</Header>
<SwitchLayout
layout={layout}
onChangeLayout={handleChangeLayout}
/>
<MovieList
layout={layout}
/>
</React.Fragment>
);
};
export const MovieList = connect(
createStructuredSelector({
movies: getMoviesSelector,
recommendations: getRecommendationsSelector,
}),
{ getData: requestData },
)(({
movies,
recommendations,
layout,
getData,
} : MovieListPropsType) => {
useEffect(() => {
getData();
}, []);
return (
<div className="container">
<div className="row">
{movies && movies.map((movie, index) => (
<Movie
key={movie.id}
even={(index + 1) % 2 === 0}
layout={layout}
movie={movie}
recommendation={find(recommendations, { movieId: movie.id })}
/>
))}
</div>
</div>
);
});
const MovieList: React.FC<MovieListPropsType> = ({ ... }) => { ... };
const mapStateToProps = createStructuredSelector({ ... });
const mapDispatchToProps = { ... };
export default connect(mapStateToProps, mapDispatchToProps)(MovieList);
const MovieList = ...
MovieList.displayName = 'MovieList';
export MovieList;