Я пытаюсь реализовать React Beautiful DnD для своего приложения. Однако я заметил довольно любопытную проблему.
Исходный список перед перетаскиванием
Я заметил, что когда я пытаюсь перетащить элементы, все остальные элементы (элементы, которые не перетаскиваются) в списке смещаются вправо.
Список во время перетаскивания
Изначально я подумал, что это проблема CSS, поэтому попытался удалить весь CSS, но проблема упорствовал. Я также понимаю, что в текущем коде ниже, но с тех пор я исправил работу функции onDragEnd, но проблема все еще сохраняется. Из-за этой проблемы перетаскиваемые элементы всегда будут располагаться сверху, несмотря на то, что я хочу разместить их в других местах.
Ниже приведен мой код:
import { SysFooterButtonGroup, SysProFormInput, TranslatedMessage } from '@comp/components-mobile';
import { Form } from 'antd-mobile';
import React, { useEffect } from 'react';
import { DragDropContext, Draggable, Droppable, DropResult } from 'react-beautiful-dnd';
const BillItem: React.FC = () => {
const [form] = Form.useForm();
const analysisTemplateItemGroups = Form.useWatch('analysisTemplateItemGroups', form);
const [items] = React.useState([
{ id: '1', name: 'Item 1' },
{ id: '2', name: 'Item 2' },
{ id: '3', name: 'Item 3' },
]);
form.setFieldValue('analysisTemplateItemGroups', items);
useEffect(() => {
console.log(analysisTemplateItemGroups, 'analysisTemplateItemGroups useEffect');
}, [analysisTemplateItemGroups]);
const onDragEnd = (result: DropResult) => {
if (!result.destination) {
return;
}
const items = [...(analysisTemplateItemGroups || [])];
const [reorderedItem] = items.splice(result.source.index, 1);
items.splice(result.destination.index, 0, reorderedItem);
form.setFieldValue('analysisTemplateItemGroups', items);
};
return (
style={{
padding: '20px',
maxWidth: '600px',
margin: '0 auto',
position: 'relative',
overflow: 'visible',
}}
>
Testing Drag
{(provided) => (
{analysisTemplateItemGroups?.map((item, dragIndex) => (
{(provided, snapshot) => (
{item.name}
)}
))}
{provided.placeholder}
)}
);
};
export default BillItem;
Подробнее здесь: https://stackoverflow.com/questions/798 ... -the-right
Реакция красивая DnD, все остальные элементы смещаются вправо ⇐ Javascript
Форум по Javascript
-
Anonymous
1762920904
Anonymous
Я пытаюсь реализовать React Beautiful DnD для своего приложения. Однако я заметил довольно любопытную проблему.
Исходный список перед перетаскиванием
Я заметил, что когда я пытаюсь перетащить элементы, все остальные элементы (элементы, которые не перетаскиваются) в списке смещаются вправо.
Список во время перетаскивания
Изначально я подумал, что это проблема CSS, поэтому попытался удалить весь CSS, но проблема упорствовал. Я также понимаю, что в текущем коде ниже, но с тех пор я исправил работу функции onDragEnd, но проблема все еще сохраняется. Из-за этой проблемы перетаскиваемые элементы всегда будут располагаться сверху, несмотря на то, что я хочу разместить их в других местах.
Ниже приведен мой код:
import { SysFooterButtonGroup, SysProFormInput, TranslatedMessage } from '@comp/components-mobile';
import { Form } from 'antd-mobile';
import React, { useEffect } from 'react';
import { DragDropContext, Draggable, Droppable, DropResult } from 'react-beautiful-dnd';
const BillItem: React.FC = () => {
const [form] = Form.useForm();
const analysisTemplateItemGroups = Form.useWatch('analysisTemplateItemGroups', form);
const [items] = React.useState([
{ id: '1', name: 'Item 1' },
{ id: '2', name: 'Item 2' },
{ id: '3', name: 'Item 3' },
]);
form.setFieldValue('analysisTemplateItemGroups', items);
useEffect(() => {
console.log(analysisTemplateItemGroups, 'analysisTemplateItemGroups useEffect');
}, [analysisTemplateItemGroups]);
const onDragEnd = (result: DropResult) => {
if (!result.destination) {
return;
}
const items = [...(analysisTemplateItemGroups || [])];
const [reorderedItem] = items.splice(result.source.index, 1);
items.splice(result.destination.index, 0, reorderedItem);
form.setFieldValue('analysisTemplateItemGroups', items);
};
return (
style={{
padding: '20px',
maxWidth: '600px',
margin: '0 auto',
position: 'relative',
overflow: 'visible',
}}
>
Testing Drag
{(provided) => (
{analysisTemplateItemGroups?.map((item, dragIndex) => (
{(provided, snapshot) => (
{item.name}
)}
))}
{provided.placeholder}
)}
);
};
export default BillItem;
Подробнее здесь: [url]https://stackoverflow.com/questions/79817327/react-beautiful-dnd-all-other-elements-shift-to-the-right[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия