老师,能帮忙看一下我写的HomePage组件是否规范么,因为我是按函数式写的,课程中是类组件。
来源:9-7 【中间件】使用redux-thunk中间价实现异步action

慕UI2205826
2021-01-31
import React, {useState, useEffect} from 'react';
import styles from './HomePage.module.css'
import { Header, Footer, Carousel, SideMenu, ProductCollection, BusinessPartners } from '../../components';
import { Row, Col, Typography, Spin } from 'antd';
// import { productList1, productList2, productList3 } from './mockups';
import sideImage1 from '../../assets/images/sider_2019_12-09.png';
import sideImage2 from '../../assets/images/sider_2019_02-04.png';
import sideImage3 from '../../assets/images/sider_2019_02-04-2.png';
import { useTranslation } from 'react-i18next';
import { useDispatch, useSelector } from 'react-redux';
import { initRecommendProductDataActionCreator } from '../../redux/recommendProducts/recommendProductsActions';
import { RootState } from '../../redux/store'
interface State {
productList: any[],
loading: boolean
}
export const HomePage: React.FC = () => {
const { t } = useTranslation()
const dispatch = useDispatch()
const productList = useSelector((state: RootState) => state.recommendProduct.productList)
const loading = useSelector((state: RootState) => state.recommendProduct.loading)
useEffect(() => {
dispatch(initRecommendProductDataActionCreator());
}, [])
return (
<>
<Header/>
{/* 页面内容 content */}
<div className={styles['page-content']}>
<Row style={{marginTop: 20}}>
<Col span={6}>
<SideMenu/>
</Col>
<Col span={18}>
<Carousel/>
</Col>
</Row>
<>
{
loading ?
<Spin></Spin> : <>
<ProductCollection
title={<Typography.Title level={3} type="warning">{t('home_page.hot_recommended')}</Typography.Title>}
sideImage={sideImage1}
products={productList[0].touristRoutes}
/>
<ProductCollection
title={<Typography.Title level={3} type="danger">{t('home_page.new_arrival')}</Typography.Title>}
sideImage={sideImage2}
products={productList[1].touristRoutes}
/>
<ProductCollection
title={<Typography.Title level={3} type="success">{t('home_page.domestic_travel')}</Typography.Title>}
sideImage={sideImage3}
products={productList[2].touristRoutes}
/></>
}
</>
<BusinessPartners/>
</div>
<Footer/>
</>
)
}
写回答
1回答
-
hello 同学们你好,你的代码已经相当规范了,只不过有个建议就是最好不直接从'../../redux/store'中引用RootState
import { RootState } from '../../redux/store'
有个更加方便的方法在接下来的课程中会介绍,就是使用一个自定义的 useSelector hook。
谢谢
012021-02-06
相似问题