index.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import React, {Component} from 'react'
  2. import {NavBar, ActivityIndicator} from 'antd-mobile'
  3. import {Query} from "react-apollo"
  4. import gql from "graphql-tag"
  5. import CartDetail from "./detail"
  6. import CartEdit from "./edit"
  7. import Empty from "../empty"
  8. import './index.css'
  9. import {cart_by_userid} from "../../../utils/gql"
  10. class All extends Component {
  11. constructor(props) {
  12. super(props)
  13. this.state = {
  14. page: 'detail'
  15. }
  16. }
  17. componentWillMount() {
  18. this.getHash()
  19. }
  20. componentWillReceiveProps(nextProps, nextContext) {
  21. this.getHash()
  22. }
  23. getHash = () => {
  24. // console.log('location',window.location.hash)
  25. let hash = window.location.hash || '#tab=cart&page=detail'
  26. let page = 'detail'
  27. if (window.location.hash && hash.indexOf("&") > 0) {
  28. let pageHash = hash.split("&")[1]
  29. page = pageHash.substr(pageHash.indexOf("=") + 1)
  30. }
  31. this.setState({
  32. page
  33. })
  34. }
  35. changeCartPage = () => {
  36. this.setState((preState) => ({
  37. page: preState.page === 'detail' ? 'edit' : 'detail'
  38. }))
  39. }
  40. renderPage = (data) => {
  41. let {page} = this.state
  42. switch (page) {
  43. case 'detail':
  44. return <CartDetail cartList={data.cartList}/>
  45. case 'edit':
  46. return <CartEdit cartList={data.cartList}/>
  47. default:
  48. return <div>test</div>
  49. }
  50. }
  51. render() {
  52. let {page} = this.state
  53. return (
  54. <Query query={gql(cart_by_userid)} variables={{user_id: "obR_j5GbxDfGlOolvSeTdZUwfpKA"}}>
  55. {
  56. ({loading, error, data}) => {
  57. if (loading) {
  58. return (
  59. <div className="loading-center">
  60. <ActivityIndicator size="large" />
  61. <span>正在加载...</span>
  62. </div>
  63. )
  64. }
  65. if (error) {
  66. return 'error!'
  67. }
  68. // console.log('cart data',data)
  69. return (
  70. <div className='cart-wrap'>
  71. <div className='cart-navbar-wrap navbar'>
  72. <NavBar
  73. mode="light"
  74. rightContent={[
  75. data.cartList.length ?
  76. <span className='navbar-button' key={"1"} onClick={this.changeCartPage}>
  77. {page === 'detail' ? "编辑" : "完成"}
  78. </span> : ''
  79. ]}
  80. >购物袋
  81. </NavBar>
  82. </div>
  83. {data.cartList.length ?
  84. this.renderPage(data) : <Empty/>
  85. }
  86. </div>
  87. )
  88. }
  89. }
  90. </Query>
  91. )
  92. }
  93. }
  94. export default All