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

您的位置:首頁技術(shù)文章
文章詳情頁

react實(shí)現(xiàn)記錄拖動(dòng)排序

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

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

react-dnd antd組件的拖動(dòng)排序都是用的這個(gè)庫,使用比較靈活,但是要配置的東西比較多,需求復(fù)雜時(shí)使用這個(gè)庫;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 在項(xiàng)目中看到引用了這個(gè)庫,使用起來也不算復(fù)雜,就試著用了這個(gè)庫,不過只支持水平或垂直拖動(dòng),一行或者一列元素時(shí)可以使用,可惜這個(gè)需求時(shí)兩行多列元素,也沒辦法用;<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 最后在網(wǎng)上搜索的時(shí)候,又看到這個(gè)庫,使用起來比較簡單,使用SortableList包裹要拖拽元素的容器,SortableElement包裹要拖拽的子元素,設(shè)置容器拖拽方向axis={'xy'}即可使grid布局的多個(gè)元素支持水平和豎直方向拖動(dòng)排序;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>

好久沒更新博客了,最近工作比較忙,差不多每天都要加班,中間有經(jīng)歷搬家,沒時(shí)間坐下來總結(jié)學(xué)到的東西。工作的時(shí)候因?yàn)檫@塊花費(fèi)了一些時(shí)間,想到可能別人也會(huì)遇到類似問題,所以就記錄下來了

到此這篇關(guān)于react實(shí)現(xiàn)記錄拖動(dòng)排序的文章就介紹到這了,更多相關(guān)react記錄拖動(dòng)排序內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲欧美日韩国产综合精品二区| 欧美va天堂| 日韩在线一区二区| 日韩影院在线观看| 欧美一级二区| 精品国产不卡一区二区| 日韩免费一区| 中文在线一区| 国产精品第一国产精品| 欧美a在线观看| 久久久成人网| 日韩欧美高清一区二区三区| 国产精品magnet| 婷婷激情一区| 日韩影片在线观看| 国产一区2区| 亚洲人成精品久久久| 麻豆一区二区三| 在线一区欧美| 你懂的亚洲视频| 99日韩精品| 美女在线视频一区| 亚洲涩涩av| 99久久激情| 香蕉久久久久久| 久久久久久久久久久妇女| 日本亚洲欧美天堂免费| 99久久精品网站| 国产另类在线| 日韩精品视频中文字幕| 天堂精品久久久久| 日韩在线a电影| 国产欧美日韩在线观看视频 | 超碰在线99| 精品一区二区三区中文字幕视频| 国产欧美日韩影院| 国产麻豆一区二区三区| 日本视频一区二区| 国产精品白丝av嫩草影院| 精品伊人久久| 欧美丝袜一区| 老司机精品久久| 欧美午夜三级| 最近高清中文在线字幕在线观看1| 日本午夜精品视频在线观看| 亚洲一区导航| 视频一区中文字幕| 日韩在线一区二区| 天堂av一区| 综合亚洲色图| 91欧美极品| 日韩精品成人在线观看| 久久最新视频| 99亚洲视频| 日韩亚洲精品在线| 亚洲一区欧美二区| 喷白浆一区二区| 喷白浆一区二区| 青青国产91久久久久久| 国产精品亚洲综合在线观看| 国产精品xvideos88| 欧美激情精品| 久久国产亚洲| 免费在线观看日韩欧美| 亚洲ww精品| 老色鬼精品视频在线观看播放| 91精品视频一区二区| 国产乱码精品一区二区三区亚洲人 | 国产日韩电影| 亚洲天堂成人| 午夜视频精品| 日韩精品三级| 欧美日本久久| 另类中文字幕国产精品| 欧美日韩中文一区二区| 国产农村妇女精品一二区| 亚洲三级毛片| 国产精品99一区二区三| 黑丝一区二区| 免费在线观看一区| 黄色在线一区| 久久wwww| 激情91久久| 久久精品国产在热久久| 国产日韩专区| 精品一区二区三区四区五区| 欧美日韩在线播放视频| 日本成人在线视频网站| 久久精品国产www456c0m| 日韩精品免费视频人成| 久久人人精品| 国产精品对白久久久久粗| 三级在线观看一区二区| 久久精品国产68国产精品亚洲| 欧美日一区二区三区在线观看国产免| 99精品视频在线观看免费播放| 欧美啪啪一区| 香蕉久久久久久久av网站| 精品一区视频| 日本久久一区| 91精品一区二区三区综合| 国产乱人伦精品一区| 四虎成人精品一区二区免费网站| jiujiure精品视频播放| 你懂的网址国产 欧美| 欧美日韩一区二区高清| 一区二区三区四区日韩| 亚洲精品一二三区区别| 欧美91视频| 999视频精品| 丝袜诱惑一区二区| 97se综合| 999国产精品永久免费视频app| 国产a亚洲精品| 精品国产欧美日韩一区二区三区| 国产乱论精品| 免费看一区二区三区| 精品国产亚洲一区二区三区在线| 久久av资源| 国产精品综合色区在线观看| 婷婷综合成人| 国产亚洲精品美女久久| 国产激情精品一区二区三区| 欧美aa在线视频| 另类专区亚洲| 午夜在线一区| 日韩成人午夜精品| 精品入口麻豆88视频| 高潮一区二区| 国产精品毛片在线| 欧美一区=区三区| 精品国产麻豆| 99国产精品视频免费观看一公开 | 免费一级片91| 国产精品亚洲四区在线观看 | 91精品一区二区三区综合在线爱| 亚洲综合在线电影| 亚洲最大av| 97精品国产一区二区三区| 国产高清一区二区| 日韩中文字幕一区二区高清99| 麻豆一区二区99久久久久| 一区免费在线| 国产日韩欧美一区在线| 亚洲午夜视频| 国产精品theporn| 午夜亚洲福利在线老司机| 精品视频一区二区三区四区五区| 亚洲欧美日韩国产一区| 欧美黄色一区| 影音先锋久久| 日本激情一区| 日本aⅴ亚洲精品中文乱码| 国产一区2区| 日韩午夜视频在线| 日本精品影院| 麻豆一区二区99久久久久| 美日韩精品视频| 婷婷综合六月| 黄色网一区二区| 国产欧美日韩免费观看| 亚洲综合婷婷| 欧美专区在线| 99精品视频在线| 色婷婷狠狠五月综合天色拍| 精品日韩在线| 麻豆国产精品| 久久亚洲精品中文字幕| 国产欧美亚洲精品a| 日本欧美一区二区| 四虎精品一区二区免费| 日韩午夜精品| 午夜在线视频一区二区区别| 亚洲午夜在线| 香蕉人人精品| 亚洲91久久| 在线成人动漫av| 中文在线一区| 亚洲3区在线| 日韩中文字幕一区二区高清99| 久久成人一区| 日韩在线观看一区二区| 免播放器亚洲| 热久久久久久| 精品一区二区三区的国产在线观看| 欧美国产精品| 国产福利一区二区三区在线播放| 国产精品传媒麻豆hd| 麻豆网站免费在线观看| 久久久水蜜桃av免费网站| 激情欧美丁香| 一本色道精品久久一区二区三区| 中日韩男男gay无套| 日韩一区二区三免费高清在线观看| 国产激情久久| 日韩在线不卡| 日本精品一区二区三区在线观看视频| 欧美国产另类| 日韩精品一卡二卡三卡四卡无卡| 久久av导航|