React-beautiful-dnd - 警告:defaultProps 将被删除

React-beautiful-dnd - warning : defaultProps will be removed

提问人:Anthony Zink 提问时间:1/15/2023 最后编辑:Anthony Zink 更新时间:8/8/2023 访问量:4171

问:

我在控制台中不明白此警告。有人可以告诉我这是图书馆的问题还是我这边的错误吗?警告图像

这是我触发警告的代码

我使用的是 13.1.1 版

<DragDropContext onDragEnd={handleDrop}>
   <Droppable droppableId="list-container" >
      {(providedA: any) => (
         <div {...providedA.droppableProps} ref={providedA.innerRef}>
            {steps.map((step, index) => {
               return <Draggable  key={step.id} draggableId={step.id.toString()} index={index}>
                  {(provided: any) => (
                     <div ref={provided.innerRef} {...provided.dragHandleProps} {...provided.draggableProps}>
                        <div>{step.title}</div>
                     </div>
                   )}
                </Draggable>
              })}
           {providedA.placeholder}
         </div>
      )}
   </Droppable>
</DragDropContext>

谢谢

我试图删除代码,发现是导致问题的 Droppable 元素。我在 React-beautiful-dnd 的 github 上找不到任何问题。

JavaScript ReactJS 警告

评论


答:

10赞 Nicholas Tower 1/15/2023 #1

警告是由库引起的。具体来说,react-beautiful-dnd 使用旧版本的 react-redux,而 react-redux 又使用消息中提到的功能:defaultProps

所以通常情况下,react-beautiful-dnd 会更新它的代码以使用新版本的 react-redux,然后你会更新到他们的最新版本,问题就会消失。但是,由于 react-beautiful-dnd 不再被开发,他们不太可能这样做。这为您提供了几个选项:

  1. 代码仍然有效,因此您可以什么都不做。React 警告你 defaultProps 最终会停止工作,但我们还没有到那一步。最早可能破坏代码的版本是 react 19.0.0,但该版本甚至还没有时间表。

  2. 您可以切换到与 react-beautiful-dnd 不同的库。也许像 react-draggable 这样的东西对你有用,尽管我不知道你的需求是什么

  3. 您可以分叉 react-beautiful-dnd 并修改他们的代码来修复它。然后,您将使用代码的分叉版本而不是原始版本。

评论

1赞 FemiHiro 8/7/2023
难道没有办法告诉反应忽略这个警告吗?
0赞 Omar Abid 10/5/2023
@FemiHiro是的,它污染了控制台。你有没有找到让它闭嘴的方法。
5赞 adam.f 8/8/2023 #2

今天,直到现在,我在我的项目中遇到了与您完全相同的 13.1.1 问题。下面描述的步骤很好地修复了它。我发现本质上是一个叫做 @hello-pangea/dnd 的分支,它提供了与最新版本完全相同的功能,但具有最新的依赖项。您甚至不必费心更改组件名称或以不同的方式实现它们或任何东西:它“只是工作”。react-beautiful-dndreact-beautiful-dndreact-beautiful-dnd

就我而言,我的项目中只有 、、 和主组件,然后是一个自定义辅助函数,该函数利用并在单独的组件中定义并导入到主组件中,因此我只需要更新两个组件的 import 语句。react-beautiful-dndDragDropContextDraggableDropResultDroppableDroppableProps

  1. 在终端中运行以下命令: 或npm install @hello-pangea/dndyarn add @hello-pangea/dnd
  2. 将所有组件中的所有语句替换为语句。import { ... } from "react-beautiful-dnd"import { ... } from "@hello-pangea/dnd"