这是我的代码。 Home.js我已经使用react-redux钩子useSelector和useDispatch来使用状态和调度请求。
import React from 'react'
import StyledBanner from '../../components/StyledBanner';
import FeaturedRoom from './FeaturedRoom';
import Hero from '../../components/Hero'
import {useDispatch, useSelector} from 'react-redux'
import {fetchRooms, fetchFeatured} from '../../redux'
function Home() {
const dispatch = useDispatch()
dispatch(fetchRooms())
dispatch(fetchFeatured())
const featuredRooms = useSelector(state=>state.roomReducer.featuredRooms)
return (
<div className="container-fluid p-0">
<Hero>
<StyledBanner title="best rooms" subtitle="subtitle">
<div className="subtitle">
</div>
<button className="btn btn-warning">Rooms</button>
</StyledBanner>
</Hero>
<FeaturedRoom featuredRooms={featuredRooms}/>
</div>
)
}
export default Home
这是FeaturedRoom.js
import React from 'react'
import StyledTitle from '../../components/StyledTitle';
import StyledButton from '../../components/StyledButton'
import {Link} from 'react-router-dom'
export function FeaturedRoom({featuredRooms}) {
return (
<div className="mt-3 mb-3 featured-container">
<div className="featured-wrapper">
<StyledTitle title="featured rooms"/>
<div className="featured-rooms">
{
featuredRooms.map(room=>(
<div key={room.id} className="featured-item">
<div className="price-tag">
<span>Rs {room.price}</span>
<span>per night</span>
</div>
<img src={room.images[0]} className="img-fluid" alt="featured-img"/>
<Link to="/"><button>Room</button></Link>
<div className="room-name">
{room.name}
</div>
</div>
))
}
</div>
</div>
</div>
)
}
export default FeaturedRoom
在第二部分FeaturedRoom.js文件中,有“链接”。在单击按钮之前,一切正常。减速器也正常工作。所有的reducers都完美地设置了状态,但是当我单击按钮时,它说[
Uncaught Error: Too many re-renders. React limits the number of renders to prevent an infinite loop.
at renderWithHooks (react-dom.development.js:14815)