实现思路
- 使用React的
useState
钩子来管理productType
状态。
- 通过
React.memo
来包装展示组件(ElectronicsComponent
、ClothingComponent
、FoodComponent
),这样当组件的props没有变化时,组件不会重新渲染。
- 在主组件中,根据
productType
的值,使用switch
语句或if - else
语句来决定渲染哪个展示组件。
关键代码
import React, { useState } from 'react';
// 假设这是三个展示组件,使用React.memo包装
const ElectronicsComponent = React.memo(() => {
return <div>电子产品展示组件</div>;
});
const ClothingComponent = React.memo(() => {
return <div>服装展示组件</div>;
});
const FoodComponent = React.memo(() => {
return <div>食品展示组件</div>;
});
const ProductShowcase = () => {
const [productType, setProductType] = useState('electronics');
let ComponentToRender;
switch (productType) {
case 'electronics':
ComponentToRender = ElectronicsComponent;
break;
case 'clothing':
ComponentToRender = ClothingComponent;
break;
case 'food':
ComponentToRender = FoodComponent;
break;
default:
ComponentToRender = ElectronicsComponent;
}
return (
<div>
<select onChange={(e) => setProductType(e.target.value)}>
<option value="electronics">电子产品</option>
<option value="clothing">服装</option>
<option value="food">食品</option>
</select>
<ComponentToRender />
</div>
);
};
export default ProductShowcase;