日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

react實現記錄拖動排序

瀏覽:31日期:2022-06-13 11:14:30

最近項目中要做一個拖動排序功能,首先想到的是之前項目中用過的antd自帶的tree和table的拖動排序,但是只能在對應的組建里使用。這里用的是自定義組件,隨意拖動排序,所以記錄一下實現流程

react-dnd antd組件的拖動排序都是用的這個庫,使用比較靈活,但是要配置的東西比較多,需求復雜時使用這個庫;class BodyRow extends React.Component { render() { const { isOver, connectDragSource, connectDropTarget, moveRow, ...restProps } = this.props; const style = { ...restProps.style, cursor: 'move' }; let { className } = restProps; if (isOver) { if (restProps.index > dragingIndex) {className += ' drop-over-downward'; } if (restProps.index < dragingIndex) {className += ' drop-over-upward'; } } return connectDragSource( connectDropTarget(<tr {...restProps} className={className} style={style} />), ); }}const rowSource = { beginDrag(props) { dragingIndex = props.index; return { index: props.index, }; },};const rowTarget = { drop(props, monitor) { const dragIndex = monitor.getItem().index; const hoverIndex = props.index; // Don't replace items with themselves if (dragIndex === hoverIndex) { return; } // Time to actually perform the action props.moveRow(dragIndex, hoverIndex); // Note: we're mutating the monitor item here! // Generally it's better to avoid mutations, // but it's good here for the sake of performance // to avoid expensive index searches. monitor.getItem().index = hoverIndex; },};const DragableBodyRow = DropTarget('row', rowTarget, (connect, monitor) => ({ connectDropTarget: connect.dropTarget(), isOver: monitor.isOver(),}))( DragSource('row', rowSource, connect => ({ connectDragSource: connect.dragSource(), }))(BodyRow),);<DndProvider backend={HTML5Backend}> <Table columns={columns} dataSource={this.state.data} components={this.components} onRow={(record, index) => ({ index, moveRow: this.moveRow, })} /></DndProvider>react-beautiful-dnd 在項目中看到引用了這個庫,使用起來也不算復雜,就試著用了這個庫,不過只支持水平或垂直拖動,一行或者一列元素時可以使用,可惜這個需求時兩行多列元素,也沒辦法用;<DragDropContext onDragEnd={this.onDragEnd}> <Droppable droppableId='phone-droppable'> {droppableProvided => ( <div ref={droppableProvided.innerRef} {...droppableProvided.droppableProps}>{this.state.phoneImages.map((image, index) => ( <Draggable key={image||'upload'} draggableId={image||'upload'} index={index}> {(provided, snapshot) => ( <divref={provided.innerRef}{...provided.draggableProps}{...provided.dragHandleProps}style={{ ...provided.draggableProps.style, opacity: snapshot.isDragging ? 0.8 : 1, display: 'inline-block'}} ><img src={img}/> </div> )} </Draggable>))}{droppableProvided.placeholder} </div> )} </Droppable></DragDropContext>react-sortable-hoc 最后在網上搜索的時候,又看到這個庫,使用起來比較簡單,使用SortableList包裹要拖拽元素的容器,SortableElement包裹要拖拽的子元素,設置容器拖拽方向axis={'xy'}即可使grid布局的多個元素支持水平和豎直方向拖動排序;const SortableItem = SortableElement(({children}) => ( <div>{children}</div>));const SortableList = SortableContainer(({children}) => { return ( <div style={{display: 'grid', gridTemplateRows: '117px 117px', gridTemplateColumns: '120px 120px 120px 120px'}}> {children} </div> );});<SortableList onSortEnd={this.onPadSortEnd} helperClass={Styles.sortableHelper} axis={'xy'}> {this.state.padImages.map((image, index) => ( <SortableItem key={`pad-item-${index}`} index={index} className={Styles.sortableItem}> <img src={img}/> </SortableItem> ))}</SortableList>

好久沒更新博客了,最近工作比較忙,差不多每天都要加班,中間有經歷搬家,沒時間坐下來總結學到的東西。工作的時候因為這塊花費了一些時間,想到可能別人也會遇到類似問題,所以就記錄下來了

到此這篇關于react實現記錄拖動排序的文章就介紹到這了,更多相關react記錄拖動排序內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
丝袜亚洲另类欧美| 久久男人av| 亚洲h色精品| 欧美日韩视频网站| 欧美国产美女| 日韩影院二区| 色婷婷狠狠五月综合天色拍| 久久影院午夜精品| 捆绑调教日本一区二区三区| 91综合网人人| 久久久水蜜桃av免费网站| 日本蜜桃在线观看视频| 日韩中文首页| 影音先锋久久| 午夜性色一区二区三区免费视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 蜜桃av一区二区三区电影| 男女性色大片免费观看一区二区| 亚洲色图国产| 国产欧美一区二区三区米奇 | 国产精品红桃| 久久精品一区| 久久久久免费av| 免费在线观看成人| 日韩国产欧美在线视频| 国产黄色一区| 韩国精品主播一区二区在线观看 | 97久久超碰| 免费日韩成人| 日本高清不卡一区二区三区视频| 精品一区免费| 在线观看一区| 国产欧美三级| 快播电影网址老女人久久| 欧美在线影院| 日韩精品视频在线看| 精品在线网站观看| 91精品一区二区三区综合在线爱 | 日韩亚洲精品在线| 日韩区欧美区| 国产伊人久久| 国产精品免费看| 国产精品久久国产愉拍| 久久精品卡一| 欧美一区不卡| 日韩一区二区三区免费播放| 免费精品视频在线| 精品一区二区三区在线观看视频| 影视先锋久久| 欧美综合社区国产| 99久久九九| 国产欧美日韩影院| 亚洲天堂成人| 亚洲免费专区| 日韩在线观看| 日韩国产欧美在线视频| 天堂√中文最新版在线| 丝袜美腿亚洲一区| 麻豆精品蜜桃视频网站| 黄色不卡一区| 国产精品一区二区三区www| 亚洲一级特黄| 另类小说一区二区三区| 欧美资源在线| 水蜜桃精品av一区二区| 亚洲日本免费电影| 亚洲天堂1区| 久久精品99国产国产精| 激情欧美一区| 精品国产午夜肉伦伦影院 | 日韩免费看片| 奇米777国产一区国产二区| 久久精品动漫| 国产精品一在线观看| 亚洲黄页一区| 高清久久精品| 欧美日韩夜夜| 男女性色大片免费观看一区二区 | 夜夜嗨av一区二区三区网站四季av| 国产精品一区高清| 亚洲自拍另类| 久久精品亚洲欧美日韩精品中文字幕| 日韩二区在线观看| 欧美日韩视频| 亚洲精品一区三区三区在线观看| 国产欧美日韩在线观看视频 | 亚洲网址在线观看| 欧洲亚洲一区二区三区| 国产精品久久乐| 亚洲婷婷在线| 福利一区二区三区视频在线观看| 日韩精品免费观看视频| 欧美在线亚洲| 播放一区二区| 高清一区二区| 国产精品s色| 青青国产91久久久久久| 视频一区视频二区在线观看| 影视先锋久久| 亚洲风情在线资源| 久久精品午夜| 欧美啪啪一区| 日韩欧美精品一区二区综合视频| 亚洲二区在线| 精品在线网站观看| 国产精品午夜一区二区三区| 日本欧美韩国一区三区| 亚洲色图国产| 视频一区视频二区中文字幕| 一区免费视频| 欧洲激情综合| 99久久亚洲精品| 电影天堂国产精品| 日本黄色精品| 精品久久久网| 精品精品久久| 久久免费精品| 欧美a级一区二区| 国产日韩欧美一区二区三区在线观看 | 国产精品久久久久77777丨| 亚洲日产av中文字幕| 久久香蕉精品| 麻豆9191精品国产| 久久av一区| 免费观看久久久4p| 亚洲精品大全| 日韩中文字幕av电影| 国产亚洲一区在线| 国内亚洲精品| 国产真实久久| 亚洲欧洲日本mm| 蜜臀久久久99精品久久久久久| 天堂成人国产精品一区| 综合激情视频| 日韩av网站免费在线| 欧美中文一区| 国产精品分类| 高清av一区| 久久精品动漫| 日韩一级网站| 亚洲免费福利一区| 国产亚洲精品美女久久| 国产精品永久| 国产精品**亚洲精品| 精品美女久久| 久久久天天操| 三级在线观看一区二区| 日日夜夜免费精品视频| 国产麻豆一区二区三区| 风间由美中文字幕在线看视频国产欧美| 国产 日韩 欧美 综合 一区| 色综合www| 免费成人在线影院| 奇米色欧美一区二区三区| 麻豆高清免费国产一区| 日韩欧美精品| 亚洲欧美日韩国产| 国产亚洲第一伦理第一区| 国产经典一区| 视频二区不卡| 午夜一级在线看亚洲| 日本一区二区三区视频在线看| 欧美日韩在线精品一区二区三区激情综合| 国产精品探花在线观看| 电影天堂国产精品| 亚洲欧美日韩国产综合精品二区| 日本久久二区| 国产精品99一区二区三| 亚洲精品91| 国产欧美日韩精品一区二区三区| 91免费精品| 午夜一区在线| 国产精品高清一区二区| 天堂中文av在线资源库 | 日韩大片在线| 久久国产精品久久久久久电车| 欧美在线日韩| 欧美日一区二区| 日韩精品视频中文字幕| 高清一区二区| 在线日韩成人| 天堂中文av在线资源库| 久久成人一区| 国产 日韩 欧美 综合 一区| 国产亚洲一级| 欧美国产极品| 日韩一级网站| 国产精品1区在线| 91久久在线| 美女尤物国产一区| 亚洲一区观看| av中文字幕在线观看第一页| 亚洲精品护士| 日韩中文在线播放| 国产麻豆精品| 久久福利精品| 日韩网站中文字幕| 国产精品一区二区精品| 在线综合视频| 欧洲一区二区三区精品|