react-beautiful-dnd-找不到DroppableProvided>占位符。 - 怎么修?

时间:2019-11-11 13:45:18

标签: javascript reactjs react-beautiful-dnd

我尝试使用“ 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 ?‍是唯一的发展信息。它将在生产版本中删除。

4 个答案:

答案 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-