Commit 843fce64ee0c83315d91d4feea9a44d67b4809ff
1 parent
71166190e9
Exists in
master
feat(master): 加入 vuex 的使用
Showing
9 changed files
with
142 additions
and
67 deletions
Show diff stats
.gitignore
src/App.vue
src/main.js
| ... | ... | @@ -0,0 +1,17 @@ |
| 1 | +import Vue from 'vue' | |
| 2 | +import App from './App.vue' | |
| 3 | +import store from './store/index' | |
| 4 | + | |
| 5 | +Vue.config.productionTip = false | |
| 6 | +Vue.prototype.sendRequest = function(param){ | |
| 7 | + let _self = this, | |
| 8 | + url = param.url, | |
| 9 | + data = param.data, | |
| 10 | + header = param.header, | |
| 11 | + token = ''; | |
| 12 | + //拼接完整请求url | |
| 13 | + let requestUrl = this.baseUrl + url; | |
| 14 | +} | |
| 15 | + | |
| 16 | + | |
| 17 | +new App({store}).$mount() | ... | ... |
src/main.ts
| ... | ... | @@ -1,18 +0,0 @@ |
| 1 | -import Vue from 'vue' | |
| 2 | -import App from './App.vue' | |
| 3 | - | |
| 4 | - | |
| 5 | -Vue.config.productionTip = false | |
| 6 | -Vue.prototype.sendRequest = function(param:any){ | |
| 7 | - let _self = this, | |
| 8 | - url = param.url, | |
| 9 | - data = param.data, | |
| 10 | - header = param.header, | |
| 11 | - token = ''; | |
| 12 | - //拼接完整请求url | |
| 13 | - let requestUrl = this.baseUrl + url; | |
| 14 | - | |
| 15 | - | |
| 16 | - | |
| 17 | -} | |
| 18 | -new App().$mount() |
src/pages/addArddess/addArddess.vue
src/pages/index/index.vue
| ... | ... | @@ -77,10 +77,12 @@ |
| 77 | 77 | </template> |
| 78 | 78 | |
| 79 | 79 | <script> |
| 80 | -import UniDrawer from "@/components/Uni-drawer/Uni-drawer.vue"; | |
| 80 | +import UniDrawer from "../../components/uni-drawer/uni-drawer.vue"; | |
| 81 | 81 | import Card from "../../components/Card/Card.vue"; |
| 82 | 82 | import HMfilterDropdown from "../../components/HM-filterDropdown/HM-filterDropdown.vue"; |
| 83 | 83 | import data from "@/common/data.js"; //筛选菜单数据 |
| 84 | +import store from '@/store'; | |
| 85 | + | |
| 84 | 86 | export default { |
| 85 | 87 | components: { |
| 86 | 88 | UniDrawer: UniDrawer, |
| ... | ... | @@ -101,57 +103,65 @@ export default { |
| 101 | 103 | indexArr: "", |
| 102 | 104 | valueArr: "", |
| 103 | 105 | // //商品数据 |
| 104 | - goodsList: [ | |
| 105 | - { | |
| 106 | - // goods_id: 0, | |
| 107 | - // img: "/static/img/goods/p1.jpg", | |
| 108 | - // name: "商品名称", | |
| 109 | - // originCost: "¥198", | |
| 110 | - // price: "¥168", | |
| 111 | - // slogan: "1235人浏览" | |
| 112 | - } | |
| 113 | - ], | |
| 106 | + // goodsList: [ | |
| 107 | + // { | |
| 108 | + // // goods_id: 0, | |
| 109 | + // // img: "/static/img/goods/p1.jpg", | |
| 110 | + // // name: "商品名称", | |
| 111 | + // // originCost: "¥198", | |
| 112 | + // // price: "¥168", | |
| 113 | + // // slogan: "1235人浏览" | |
| 114 | + // } | |
| 115 | + // ], | |
| 114 | 116 | loadingText: "正在加载...", |
| 115 | 117 | filterDropdownValue: [], |
| 116 | 118 | filterData: [] |
| 117 | 119 | }; |
| 118 | 120 | }, |
| 121 | + computed: { | |
| 122 | + goodsList() { | |
| 123 | + // 也可以从 getters 获取 | |
| 124 | + console.log(this.$store.getters.list); | |
| 125 | + return this.$store.state.test.list; | |
| 126 | + } | |
| 127 | + }, | |
| 119 | 128 | filters: { |
| 120 | 129 | outData(value) { |
| 121 | 130 | return JSON.stringify(value); |
| 122 | 131 | } |
| 123 | 132 | }, |
| 124 | 133 | onLoad: function() { |
| 125 | - uni.request({ | |
| 126 | - url: "https://api.glass.xiuyetang.com/app/prod/list", | |
| 127 | - method: "post", | |
| 128 | - data: { | |
| 129 | - // text: 'uni.request' | |
| 130 | - }, | |
| 131 | - header: { | |
| 132 | - // 'custom-header': 'hello', //自定义请求头信息 | |
| 133 | - "Content-Type": "application/x-www-form-urlencoded" | |
| 134 | - // 'Content-Type':'multipart/form-data' | |
| 135 | - // 'Content-Type':'ext/plain' | |
| 136 | - }, | |
| 137 | - timeout: 3000, | |
| 138 | - // dataType:'json' | |
| 139 | - // responseType:'text', | |
| 140 | - // sslVerify: true,//验证 ssl 证书 | |
| 141 | - withCredentials: false, //跨域请求时是否携带凭证(cookies) | |
| 142 | - success: res => { | |
| 143 | - console.error("success status === > ", res); | |
| 144 | - this.goodsList = res.data.data; | |
| 145 | - // console.log('res.data', res.data); | |
| 146 | - // this.text = 'request success'; | |
| 147 | - }, | |
| 148 | - fail: res => { | |
| 149 | - console.log("fail status === > ", res); | |
| 150 | - }, | |
| 151 | - complete: res => { | |
| 152 | - console.log("complete status === > ", res); | |
| 153 | - } | |
| 154 | - }); | |
| 134 | + store.dispatch('test/fetch'); | |
| 135 | + // uni.request({ | |
| 136 | + // url: "https://api.glass.xiuyetang.com/app/prod/list", | |
| 137 | + // method: "post", | |
| 138 | + // data: { | |
| 139 | + // // text: 'uni.request' | |
| 140 | + // }, | |
| 141 | + // header: { | |
| 142 | + // // 'custom-header': 'hello', //自定义请求头信息 | |
| 143 | + // "Content-Type": "application/x-www-form-urlencoded" | |
| 144 | + // // 'Content-Type':'multipart/form-data' | |
| 145 | + // // 'Content-Type':'ext/plain' | |
| 146 | + // }, | |
| 147 | + // timeout: 3000, | |
| 148 | + // // dataType:'json' | |
| 149 | + // // responseType:'text', | |
| 150 | + // // sslVerify: true,//验证 ssl 证书 | |
| 151 | + // withCredentials: false, //跨域请求时是否携带凭证(cookies) | |
| 152 | + // success: res => { | |
| 153 | + // console.error("success status === > ", res); | |
| 154 | + // this.goodsList = res.data.data; | |
| 155 | + // // console.log('res.data', res.data); | |
| 156 | + // // this.text = 'request success'; | |
| 157 | + // }, | |
| 158 | + // fail: res => { | |
| 159 | + // console.log("fail status === > ", res); | |
| 160 | + // }, | |
| 161 | + // complete: res => { | |
| 162 | + // console.log("complete status === > ", res); | |
| 163 | + // } | |
| 164 | + // }); | |
| 155 | 165 | //定时器模拟ajax异步请求数据 |
| 156 | 166 | // setTimeout(()=>{ |
| 157 | 167 | // //传入defaultSelected的结构不能错,错了就报错运行异常。 不选中的项目传入null | ... | ... |
src/pages/myOrder/myOrder.vue
| ... | ... | @@ -18,10 +18,10 @@ |
| 18 | 18 | </view> |
| 19 | 19 | </view> |
| 20 | 20 | <view class="footer">已显示全部</view> |
| 21 | - </view> | |
| 22 | -</template> | |
| 21 | + </view> | |
| 22 | +</template> | |
| 23 | 23 | <script> |
| 24 | - import OrderCard from './OrderCard.vue' | |
| 24 | + import OrderCard from './orderCard.vue' | |
| 25 | 25 | export default { |
| 26 | 26 | components:{ |
| 27 | 27 | 'OrderCard':OrderCard |
| ... | ... | @@ -35,7 +35,7 @@ |
| 35 | 35 | {current:3,text:'待收货'}, |
| 36 | 36 | {current:4,text:'退款售后'}, |
| 37 | 37 | ], |
| 38 | - current: 0, | |
| 38 | + current: 0, | |
| 39 | 39 | //订单数据 |
| 40 | 40 | orderList:[ |
| 41 | 41 | { orderId: 0, img: '/static/img/goods/p1.jpg', name: '商品名称',originCost:'¥198',price: '¥168', orderType:1 ,buyNum:1}, |
| ... | ... | @@ -47,7 +47,7 @@ |
| 47 | 47 | { orderId: 7, img: '/static/img/goods/p8.jpg', name: '商品名称',originCost:'¥198',price: '¥168', orderType:4 ,buyNum:1}, |
| 48 | 48 | { orderId: 8, img: '/static/img/goods/p9.jpg', name: '商品名称',originCost:'¥198',price: '¥168', orderType:5 ,buyNum:1}, |
| 49 | 49 | { orderId: 9, img: '/static/img/goods/p10.jpg', name: '商品名称',originCost:'¥198',price: '¥168', orderType:5 ,buyNum:1} |
| 50 | - ], | |
| 50 | + ], | |
| 51 | 51 | |
| 52 | 52 | }; |
| 53 | 53 | }, | ... | ... |
src/store/index.js
| ... | ... | @@ -0,0 +1,24 @@ |
| 1 | +import Vue from 'vue' | |
| 2 | +import Vuex from 'vuex' | |
| 3 | + | |
| 4 | +Vue.use(Vuex) | |
| 5 | + | |
| 6 | +const modulesFiles = require.context('./modules', true, /\.js$/) | |
| 7 | + | |
| 8 | +const modules = modulesFiles.keys().reduce((modules, modulePath) => { | |
| 9 | + const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1') | |
| 10 | + const value = modulesFiles(modulePath) | |
| 11 | + | |
| 12 | + modules[moduleName] = value.default | |
| 13 | + | |
| 14 | + return modules | |
| 15 | +}, {}) | |
| 16 | + | |
| 17 | +const store = new Vuex.Store({ | |
| 18 | + modules, | |
| 19 | + getters: { | |
| 20 | + list: state => state.test.list | |
| 21 | + } | |
| 22 | +}) | |
| 23 | + | |
| 24 | +export default store; | |
| 0 | 25 | \ No newline at end of file | ... | ... |
src/store/modules/test.js
| ... | ... | @@ -0,0 +1,41 @@ |
| 1 | +const state = { | |
| 2 | + list: [], | |
| 3 | +}; | |
| 4 | + | |
| 5 | +const mutations = { | |
| 6 | + INIT: (state, list) => { | |
| 7 | + state.list = list; | |
| 8 | + }, | |
| 9 | +}; | |
| 10 | + | |
| 11 | +const actions = { | |
| 12 | + fetch({ commit }, param) { | |
| 13 | + uni | |
| 14 | + .request({ | |
| 15 | + url: "https://api.glass.xiuyetang.com/app/prod/list", | |
| 16 | + method: "post", | |
| 17 | + data: {}, | |
| 18 | + header: { | |
| 19 | + "Content-Type": "application/x-www-form-urlencoded", | |
| 20 | + }, | |
| 21 | + timeout: 3000, | |
| 22 | + withCredentials: false, | |
| 23 | + success: (res) => { | |
| 24 | + commit('INIT', res.data.data) | |
| 25 | + }, | |
| 26 | + fail: (res) => { | |
| 27 | + console.log("fail status === > ", res); | |
| 28 | + }, | |
| 29 | + complete: (res) => { | |
| 30 | + console.log("complete status === > ", res); | |
| 31 | + }, | |
| 32 | + }); | |
| 33 | + }, | |
| 34 | +}; | |
| 35 | + | |
| 36 | +export default { | |
| 37 | + namespaced: true, | |
| 38 | + state, | |
| 39 | + mutations, | |
| 40 | + actions, | |
| 41 | +}; | ... | ... |