index.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import React, {PureComponent} from 'react';
  2. import Banner from "./components/Banner";
  3. import ListWrapper from './components/List';
  4. import Feature from "./components/Feature";
  5. import {HomeWrapper, MainWrapper} from './style';
  6. import {actionCreators} from "./store";
  7. import {connect} from "react-redux";
  8. import {getrand} from "../../lib/public";
  9. class Home extends PureComponent {
  10. constructor(props) {
  11. super(props);
  12. this.state = {
  13. banner: '',
  14. innerHeight: window.innerHeight,
  15. };
  16. this.getBanner = this.getBanner.bind(this);
  17. }
  18. render() {
  19. const {banner, innerHeight} = this.state;
  20. const {userInfo, featureList, ListImg} = this.props;
  21. return (
  22. <HomeWrapper>
  23. <Banner banner={banner} innerHeight={innerHeight} getBanner={this.getBanner} userInfo={userInfo}/>
  24. <MainWrapper id='content'>
  25. <Feature featureList={featureList} ListImg={ListImg}/>
  26. <ListWrapper/>
  27. </MainWrapper>
  28. </HomeWrapper>
  29. )
  30. }
  31. componentDidMount() {
  32. this.changeInnerHeight();
  33. this.getBanner();
  34. this.props.getFeature();
  35. }
  36. getBanner() {
  37. const banner = this.props.bannerList;
  38. const num = getrand(0, banner.length - 1);
  39. this.setState({
  40. banner: `url('${banner[num].img}')`
  41. })
  42. }
  43. changeInnerHeight() {
  44. window.onresize = () => {
  45. this.setState({
  46. innerHeight: window.innerHeight,
  47. })
  48. }
  49. }
  50. }
  51. const mapState = (state) => {
  52. return {
  53. userInfo: state.getIn(['header', 'userInfo']),
  54. featureList: state.getIn(['home', 'featureList']),
  55. ListImg: state.getIn(['image', 'ListImg']),
  56. bannerList: state.getIn(['image', 'bannerList'])
  57. }
  58. };
  59. const mapDispatch = (dispatch) => {
  60. return {
  61. getFeature() {
  62. dispatch(actionCreators.getFeature());
  63. }
  64. }
  65. };
  66. export default connect(mapState, mapDispatch)(Home);