index.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import React, {Component} from 'react'
  2. import {NavBar, Icon, ActivityIndicator, Grid} from 'antd-mobile'
  3. import {Input} from 'antd'
  4. import './index.css'
  5. import {productbyprops} from "../../../utils/gql"
  6. import {Query} from "react-apollo"
  7. import gql from "graphql-tag"
  8. const Search = Input.Search
  9. class Kind extends Component {
  10. constructor(props) {
  11. super(props)
  12. this.state = {}
  13. }
  14. render() {
  15. let {id, changePageInHome} = this.props
  16. return (
  17. <div className='kind-wrap'>
  18. <div className='kind-navbar-wrap'>
  19. <NavBar
  20. className='kind-navbar'
  21. mode="light"
  22. icon={<Icon type="left"/>}
  23. onLeftClick={() => changePageInHome('all', {}, false)}
  24. rightContent={[
  25. <Icon key="1" type="ellipsis"/>,
  26. ]}
  27. >商品分类</NavBar>
  28. </div>
  29. <div className='kind-search-wrap'>
  30. <Search
  31. className='kind-search'
  32. placeholder="请输入搜索内容"
  33. onSearch={value => console.log(value)}
  34. />
  35. </div>
  36. <Query query={gql(productbyprops)} variables={{intro: id}}>
  37. {
  38. ({loading, error, data}) => {
  39. if (loading) {
  40. return (
  41. <div className="loading-center">
  42. <ActivityIndicator text="Loading..." size="large"/>
  43. </div>
  44. )
  45. }
  46. if (error) {
  47. return 'error!'
  48. }
  49. return (
  50. <KindRender
  51. data={data.productbyprops}
  52. changePageInHome={changePageInHome}
  53. />
  54. )
  55. }
  56. }
  57. </Query>
  58. </div>
  59. )
  60. }
  61. }
  62. export default Kind
  63. class KindRender extends Component {
  64. constructor(props) {
  65. super(props)
  66. this.state = {}
  67. }
  68. render() {
  69. let {data, changePageInHome} = this.props
  70. return (
  71. <div className='kind-wrapper'>
  72. <Grid data={data}
  73. columnNum={2}
  74. hasLine={false}
  75. onClick={(kind) => {
  76. changePageInHome('detail', {id: kind.id})
  77. }}
  78. renderItem={dataItem => (
  79. <div key={dataItem.id} className='kind-item'>
  80. <div className='kind-item-img'
  81. style={{backgroundImage: "url('" + dataItem.img + "')"}}/>
  82. <div className='kind-item-description'>
  83. <div className='kind-item-name'>{dataItem.name}</div>
  84. <div className='kind-item-price'>{dataItem.price}</div>
  85. </div>
  86. </div>
  87. )}
  88. />
  89. </div>
  90. )
  91. }
  92. }