我不明白,我想用下面的代码,当我访问 Fruit.js 页面/组件('/fruits/:slug' route)时,它应该会导致无限循环......但它没有,为什么?(我很高兴它没有,但只是好奇为什么?)
应用程序.js
const App = () => {
const [dummyData, setDummyData] = useState([
{ slug: 'apple', name: 'Apple', color: 'Red' },
{ slug: 'watermelon', name: 'Watermelon', color: 'Green' },
{ slug: 'peach', name: 'Peach', color: 'Pink' },
{ slug: 'banana', name: 'Banana', color: 'Yellow' },
]);
const [fruitSlug, setFruitSlug] = useState('');
const getSlug = (slug) => {
setFruitSlug(slug);
console.log(slug);
};
return (
<div className='App'>
{dummyData.map((fruit) => (
<span className='fruit-link' key={fruit.slug}>
<Link to={`/fruits/${fruit.slug}`}>{fruit.name}</Link>{' '}
</span>
))}
<Switch>
<Route path='/' exact component={Home} />
<Route
path='/fruits/:slug'
render={(props) => <Fruit {...props} getSlug={getSlug} />}
/>
</Switch>
</div>
);
};
export default App;
Fruit.js
const Fruit = ({ getSlug }) => {
const { slug } = useParams();
useEffect(() => {
getSlug(slug);
}, [getSlug, slug]);
return (
<div className='fruit'>
<h1>Fruit page</h1>
</div>
);
};
export default Fruit;