主页 > 游戏开发  > 

第62讲商品搜索动态实现以及性能优化


商品搜索后端动态获取数据

后端动态获取数据:

/** * 商品搜索 * @param q * @return */ @GetMapping("/search") public R search(String q){ List<Product> productList = productService.list(new QueryWrapper<Product>().like("name", q)); Map<String,Object> map=new HashMap<>(); map.put("message",productList); return R.ok(map); }

定义productList

/** * 页面的初始数据 */ data: { productList:[], // 商品数组 inputValue:"", // 输入框的值 isFocus:false // 取消 按钮 是否显示 },

前端调用

/** * 请求后端 商品搜索 */ async search(q){ const result = await requestUtil({ url: '/product/search', data:{q} }); this.setData({ productList: result.productList }) }, // 处理input事件 handleInput(e){ const {value}=e.detail; if(!value.trim()){ this.setData({ productList:[], isFocus:false }) return; } this.setData({ isFocus:true }) clearTimeout(this.TimeoutId); this.TimeoutId=setTimeout(()=>{ this.search(value) },1000) },

页面渲染:

<view class="search_row"> <input type="text" model:value="{{inputValue}}" placeholder="请输入商品关键字" bindinput="handleInput"/> <button hidden="{{!isFocus}}">取消</button> </view> <view class="search_content"> <navigator class="search_item" wx:for="{{productList}}" wx:key="id" url="/pages/product_detail/index?id={{item.id}}" > {{item.name}} </navigator> </view>

样式:

page{ background-color: #F9F9F9; padding-top: 20rpx; } .search_row{ height: 50rpx; display: flex; input{ background-color: #FFFFFF; flex:1; height: 100%; padding-left: 30rpx; } button{ display:flex; justify-content: center; align-items: center; width:110rpx !important; font-size: 26rpx; padding: 0; margin: 0 10rpx; height: 100%; } } .search_content{ margin-top: 15rpx; padding: 0px; .search_item{ background-color: #FFFFFF; font-size: 26rpx; padding: 15rpx; align-items: center; border-bottom: 1rpx solid #EAEAEA; overflow:hidden; white-space: nowrap; text-overflow: ellipsis; } }

取消按钮:

<view class="search_row"> <input type="text" model:value="{{inputValue}}" placeholder="请输入商品关键字" bindinput="handleInput"/> <button hidden="{{!isFocus}}">取消</button> </view> // 点击 取消按钮 handleCancel(){ this.setData({ productList:[], // 商品数组 isFocus:false, // 取消 按钮 是否显示 inputValue:"" // 输入框的值 }) },

搜索性能优化

搞个定时器

// 处理input事件 handleInput(e){ const {value}=e.detail; if(!value.trim()){ this.setData({ productList:[], isFocus:false }) return; } this.setData({ isFocus:true }) clearTimeout(this.TimeoutId); this.TimeoutId=setTimeout(()=>{ this.search(value) },1000) },
标签:

第62讲商品搜索动态实现以及性能优化由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“第62讲商品搜索动态实现以及性能优化