*最近項目中要做一個拖動排序功能,首先想到的是之前項目中用過的antd自帶的tree和table的拖動排序,但是只能在對應的組建里使用。這裡用的是自定義組件,隨意拖動排序,所以記錄一下實現流程* 1. ***react-dnd*** antd組件的拖動排序都是用的這個庫,使用比較靈活,但是要配置的東 ...
隨著技術的發展,開發的複雜度也越來越高,傳統開發方式將一個系統做成了整塊應用,經常出現的情況就是一個小小的改動或者一個小功能的增加可能會引起整體邏輯的修改,造成牽一發而動全身。
通過組件化開發,可以有效實現單獨開發,單獨維護,而且他們之間可以隨意的進行組合。大大提升開發效率低,降低維護成本。 組件化對於任何一個業務場景複雜的前端應用以及經過多次迭代之後的產品來說都是必經之路。組件化要做的不僅僅是錶面上看到的模塊拆分解耦,其背後還有很多工作來支撐組件化的進行,例如結合業務特性的模塊拆分策略、模塊間的交互方式和構建系統等等
今天給大家介紹的一款組件是:自定義商品評價頁面單選多選標簽tags組件單選多選按鈕選擇器picker組件,附帶完整代碼下載地址:https://ext.dcloud.net.cn/plugin?id=13487
效果圖如下:
cc-multipleBtn
使用方法
<!-- colors:設置顏色 remarkList:標簽數組 @click:標簽點擊 -->
<cc-multipleBtn :colors="colors" :remarkList="remarkList" @click="tagsClick"></cc-multipleBtn>
HTML代碼實現部分
<template>
<view class="cencal_order">
<view class="remark">
<textarea maxlength="-1" placeholder="請在此處輸入評價" placeholder-class="textarea_p"></textarea>
</view>
<!-- colors:設置顏色 remarkList:標簽數組 @click:標簽點擊 -->
<cc-multipleBtn :colors="colors" :remarkList="remarkList" @click="tagsClick"></cc-multipleBtn>
<view class="btns" :style="{background: '#fbbd08'}">
確認提交
</view>
</view>
</template>
<script>
var app = getApp();
export default {
data() {
return {
colors: '#f37b1d',
remarkList: [{
name: '商品品質好'
}, {
name: '性價比高'
}, {
name: '態度好'
}, {
name: '價格合理'
}, {
name: '做工不錯'
}, {
name: '物流時間長'
}, {
name: '價格優惠低'
}, {
name: '其他原因'
}],
data: ""
};
},
components: {},
props: {},
/**
* 用戶點擊右上角分享
*/
onShareAppMessage: function() {},
methods: {
tagsClick(tagArr) {
console.log("arr = ", JSON.stringify(tagArr));
uni.showModal({
title: '選中的標簽',
content: '選中的標簽 = ' + JSON.stringify(tagArr)
})
}
}
};
</script>
<style lang="scss" scoped>
page {
background-color: #F5F5FA;
}
.cencal_order {
padding: 20upx 4%;
background-color: #fff;
}
.remark {
background-color: #F5F5F5;
border-radius: 10upx;
height: 28vw;
padding: 20upx;
margin-top: 20upx;
textarea {
font-size: 26upx;
color: #797979;
}
}
.textarea_p {
font-size: 24upx;
color: #797979;
}
.btns {
width: 100%;
height: 80upx;
line-height: 80upx;
font-size: 30upx;
color: #333;
text-align: center;
margin-top: 100upx;
border-radius: 8upx;
margin-bottom: 100px;
}
</style>