我尝试使用“ react-beautiful-dnd”,并将实现与现有项目结合在一起。我使用的软件包版本为10.1.1,因为我不能使用更高的软件包。
我试图将placehoder放置在不同的div中,并且还提供了可放置元素。
import React from 'react';
import SalesChart from './SalesChart';
import Tasks from './Tasks';
import LunchFeed from 'widgets/LunchFeed';
import Weather from 'widgets/Weather';
import {Draggable, Droppable, DragDropContext} from "react-beautiful-dnd";
class Dashboard extends React.Component {
constructor(props) {
super(props);
}
onDragEnd(result) {
//TODO
const {destination, source, draggableId} = result;
console.log(result);
if (!destination) {
return;
}
}
render() {
return (
<DragDropContext onDragEnd={this.onDragEnd}>
<Droppable droppableId="drop1">
{(provided, snapshot) => (
<div className="content" ref={provided.innerRef} {...provided.droppableProps}>
<div className="container-fluid">
<div className="row">
<Draggable key={1} draggableId={1} index={1}>
{(provided, snapshot) => (
<div className="col-md-6">
<SalesChart innerRef={provided.innerRef}
{...provided.draggableProps}
{...provided.dragHandleProps}/>
</div>
)}
</Draggable>
<Draggable key={2} draggableId={2} index={2}>
{(provided, snapshot) => (
<div className="col-md-6">
<Tasks innerRef={provided.innerRef}
{...provided.draggableProps}
{...provided.dragHandleProps}/>
</div>
)}
</Draggable>
</div>
<div className="row">
<Draggable key={3} draggableId={3} index={3}>
{(provided, snapshot) => (
<div className="col-md-6">
<LunchFeed innerRef={provided.innerRef}
{...provided.draggableProps}
{...provided.dragHandleProps}/>
</div>
)}
</Draggable>
<Draggable key={4} draggableId={4} index={4}>
{(provided, snapshot) => (
<div className="col-md-6">
<Weather innerRef={provided.innerRef}
{...provided.draggableProps}
{...provided.dragHandleProps}/>
</div>
)}
</Draggable>
</div>
</div>
{provided.placeholder}
</div>
)}
</Droppable>
</DragDropContext>
)
}
}
export default Dashboard;
当我拖动一个元素时,我得到以下警告: Droppable设置问题[droppableId:“ drop1”]:DroppableProvided>占位符。请确保将{provided.placeholder} React节点添加为Droppable的子代。更多信息:https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/api/droppable.md ?是唯一的发展信息。它将在生产版本中删除。
答案 0 :(得分:6)
我遇到了同样的问题,但是我在文档中发现您需要将占位符添加为可放置和可拖动的子代。
示例:
<Draggable key={1} draggableId={1} index={1}>
{(provided, snapshot) => (
<div className="col-md-6">
<SalesChart innerRef={provided.innerRef}
{...provided.draggableProps}
{...provided.dragHandleProps}/>
{provided.placeholder}
</div>
)}
</Draggable>
答案 1 :(得分:1)
我在这里使用 droppable.md 解决了同样的问题。
你应该使用 {provided.placeholder}
答案 2 :(得分:1)
我可以看到您已经完成了 documentation 中描述的所有内容。我遇到了同样的问题,我也遵循了文档,但仍然收到相同的警告消息。当我注意到文档结构时,它终于对我有用了,看到 我有额外的不相关子元素以及可拖动和 {provided.placeholder}
在 droppable 内。
对于您的情况,使用 <div className='row'>
而不是 <div className='content'>
用于 droppable props 和 ref 属性可能会修复警告。
答案 3 :(得分:0)
我在本地遇到了同样的问题。
你只需要在droppable容器的末尾注入以下代码{provided.placeholder}
例如
<Droppable droppableId="droppable-1">
{(provided, snapshot) => (
<div ref={provided.innerRef} {...provided.droppableProps}>
Good to go
{provided.placeholder} // <- this is what you need
</div>
)}
</Droppable>
来源:https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/api/droppable.md#droppable-