【发布时间】:2020-08-20 11:25:21
【问题描述】:
这是我的代码。主页.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 文件的第二部分,有“链接”。在我单击按钮之前,一切正常。减速机也工作正常。所有的减速器都完美地设置了状态,但是当我点击按钮时,它说
Uncaught Error: Too many re-renders. React limits the number of renders to prevent an infinite loop.
at renderWithHooks (react-dom.development.js:14815)
【问题讨论】:
标签: reactjs infinite-loop infinite rerender