Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
1/8
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack
1/8

Bike Storage Rack Quick‑Release Adjustable Garage Storage Rack

$55.95
$55.95
Save $0.00
Quantity
Over $49.99 Free Shipping
30-day Zero-risk Return
100% Customer Satisfaction
Secure Payments
Customer Reviews

Here are what our customers say.

Write a Review
Customer Reviews
Wow you reached the bottom
Newest
Most liked
Highest ratings
Lowest ratings
×
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.

1. Using nylon and steel material, the quality is guaranteed. It can load bearing 20kg/705.5oz.

2. Multi‑angle adjustment of the wall‑mounted bicycle, quick‑release design.

3. Easy and convenient without taking up space, portable, strong and durable. Make your home more tidy.

4. The width of nylon clamp can be adjusted. The width can be adjusted to 25‑40cm/9.8-15.7in according to your needs.

5. Durable bearing expansion screw with long time load bearing, stable not fell off, save more space.

Spec:

Condition: 100% brand new

Item type: Bike Rack Hanger

Material: Nylon + Steel

Color: As Picture Shown

Product Size: Approx. 40cm/15.7in

Base Size: Approx. 9.5x9.5cm/3.7x3.7in

Clamp Size: Approx. 10.5cm/4.1in

Weight: Approx. 1168g/41.2oz

Product Bearing Capacity: About 20kg
Applicable Model: Road Mountain Bike, Folding Bike Etc

Package List:

  • 1 x Bike Rack Hanger  
  • 1 x Manual  
  • 4 x Screw
  • 4 x Accessories