App.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. import React, { Component } from 'react';
  2. import {PageContext} from './components/context'
  3. import './App.css';
  4. import {graphqls} from './api/graphql_request'
  5. import {getStoreByProps} from './api/graphql/store'
  6. import {getSlidesByProps} from './api/graphql/slides'
  7. import TabBarBottom from './components/App/TabBarBottom'
  8. import HomePage from './components/HomePage/HomePage'
  9. import UserPage from './components/UserPage/userPage'
  10. import StoreDetailPage from './components/StoreDetailPage/StoreDetailPage'
  11. import AllStorePage from './components/AllStorePage/AllStorePage'
  12. class OrderApp extends Component {
  13. constructor(props){
  14. super(props)
  15. this.state={
  16. page:'home',
  17. store:[],
  18. slide:[],
  19. currentStore:{}
  20. }
  21. this.changePage=this.changePage.bind(this)
  22. this.setCurrentStore=this.setCurrentStore.bind(this)
  23. }
  24. componentDidMount(){
  25. this.getStores()
  26. this.getSlides()
  27. }
  28. changePage(page){
  29. this.setState({page})
  30. }
  31. //
  32. setCurrentStore(store){
  33. console.log(store)
  34. this.setState({currentStore:store})
  35. }
  36. getStores(){
  37. //获取所有商家
  38. return graphqls(getStoreByProps,{}).then((e)=>{
  39. console.log(e.storebyprops)
  40. this.setState({
  41. store:e.storebyprops
  42. })
  43. })
  44. }
  45. getSlides(){
  46. return graphqls(getSlidesByProps,{}).then((e)=>{
  47. this.setState({ slide:e.slidsbyprops })
  48. })
  49. }
  50. //根据状态渲染页面
  51. renderPage(page){
  52. switch(page){
  53. case ('home'):
  54. //console.log('++++1+++++',this.state.store)
  55. return(
  56. <div className="pageWrap">
  57. <div className="scrollPage">
  58. <HomePage changePage={this.changePage} store={this.state.store} slide={this.state.slide} setCurrentStore={this.setCurrentStore}/>
  59. </div>
  60. </div>
  61. )
  62. case ('user'):
  63. return(
  64. <div className="pageWrap">
  65. <div className="scrollPage">
  66. <UserPage changePage={this.changePage} />
  67. </div>
  68. </div>
  69. )
  70. case ('detail'):
  71. return(
  72. <div className="pageWrap">
  73. <div className="scrollPage">
  74. <StoreDetailPage changePage={this.changePage} store={this.state.currentStore}/>
  75. </div>
  76. </div>
  77. )
  78. case ('all'):
  79. return(
  80. <div className="pageWrap">
  81. <div className="scrollPage">
  82. <AllStorePage changePage={this.changePage} store={this.state.currentStore}/>
  83. </div>
  84. </div>
  85. )
  86. default:
  87. return(
  88. <div>页面加载失败,请刷新页面</div>
  89. )
  90. }
  91. }
  92. renderBottom(){
  93. let page=this.state.page
  94. if(page==='home'||page==='user'){
  95. return(<TabBarBottom changePage={this.changePage}/>)
  96. }
  97. }
  98. render() {
  99. const changePage=this.changePage
  100. return (
  101. <div className="AppWrap">
  102. <div className="phone6s">
  103. <div className="App">
  104. <div className="App orderApp">
  105. <PageContext.Provider value={changePage}>
  106. {this.renderPage(this.state.page)}
  107. {this.renderBottom()}
  108. </PageContext.Provider>
  109. </div>
  110. </div>
  111. </div>
  112. </div>
  113. );
  114. }
  115. }
  116. export default OrderApp;