TabBarTop.jsx 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import React, { Component } from 'react';
  2. import { Tabs, WhiteSpace } from 'antd-mobile';
  3. import Cards from './Cards'
  4. import {graphqls} from '../../api/graphql_request'
  5. import {getProductByProps} from '../../api/graphql/product'
  6. const query=getProductByProps
  7. let variables={}
  8. //获取所有商品
  9. function getGoods(){
  10. return graphqls(query,variables).then((data)=>{
  11. //console.log("data",data.productbyprops)
  12. let products=data.productbyprops
  13. let arr=products.map((item)=>{
  14. return item.category
  15. })
  16. arr = Array.from(new Set(arr))
  17. let tabs=arr.map((item)=>{
  18. return {title:item}
  19. })
  20. return {tabs,products}
  21. })
  22. }
  23. class TabBarTop extends Component {
  24. constructor(props){
  25. super(props)
  26. this.state={
  27. tabs:[],
  28. product_s:[],
  29. products:[],
  30. select:'所有果品'
  31. }
  32. }
  33. componentDidMount () {
  34. //console.log('tets')
  35. getGoods().then((data)=>{
  36. this.setState({
  37. tabs:[{title: '所有果品'},...data.tabs],
  38. products:data.products,
  39. select:'所有果品'
  40. })
  41. sessionStorage.setItem("products",JSON.stringify(data.products))
  42. })
  43. }
  44. tabChange(e){
  45. let category=e.title,
  46. products = JSON.parse(sessionStorage.getItem("products"));
  47. if(category==='所有果品'){
  48. this.setState({
  49. products:products
  50. })
  51. }else{
  52. let arr =products.filter((item)=>{
  53. return item.category===category
  54. })
  55. this.setState({
  56. products:arr
  57. })
  58. }
  59. }
  60. render() {
  61. //console.log('this.state.products',this.state.products)
  62. return (
  63. <div>
  64. <WhiteSpace />
  65. <Tabs onChange={this.tabChange.bind(this)} tabs={this.state.tabs} renderTabBar={props => <Tabs.DefaultTabBar {...props} page={4} />}>
  66. </Tabs>
  67. <WhiteSpace />
  68. <Cards products={this.state.products ?this.state.products:[]}/>
  69. </div>
  70. );
  71. }
  72. }
  73. export default TabBarTop