提问人:Anthony Zink 提问时间:1/15/2023 最后编辑:Anthony Zink 更新时间:8/8/2023 访问量:4171
React-beautiful-dnd - 警告:defaultProps 将被删除
React-beautiful-dnd - warning : defaultProps will be removed
问:
我在控制台中不明白此警告。有人可以告诉我这是图书馆的问题还是我这边的错误吗?警告图像
这是我触发警告的代码
我使用的是 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 上找不到任何问题。
答:
警告是由库引起的。具体来说,react-beautiful-dnd 使用旧版本的 react-redux,而 react-redux 又使用消息中提到的功能:defaultProps。
所以通常情况下,react-beautiful-dnd 会更新它的代码以使用新版本的 react-redux,然后你会更新到他们的最新版本,问题就会消失。但是,由于 react-beautiful-dnd 不再被开发,他们不太可能这样做。这为您提供了几个选项:
代码仍然有效,因此您可以什么都不做。React 警告你 defaultProps 最终会停止工作,但我们还没有到那一步。最早可能破坏代码的版本是 react 19.0.0,但该版本甚至还没有时间表。
您可以切换到与 react-beautiful-dnd 不同的库。也许像 react-draggable 这样的东西对你有用,尽管我不知道你的需求是什么
您可以分叉 react-beautiful-dnd 并修改他们的代码来修复它。然后,您将使用代码的分叉版本而不是原始版本。
评论
今天,直到现在,我在我的项目中遇到了与您完全相同的 13.1.1 问题。下面描述的步骤很好地修复了它。我发现本质上是一个叫做 @hello-pangea/dnd
的分支,它提供了与最新版本完全相同的功能,但具有最新的依赖项。您甚至不必费心更改组件名称或以不同的方式实现它们或任何东西:它“只是工作”。react-beautiful-dnd
react-beautiful-dnd
react-beautiful-dnd
就我而言,我的项目中只有 、、 和主组件,然后是一个自定义辅助函数,该函数利用并在单独的组件中定义并导入到主组件中,因此我只需要更新两个组件的 import 语句。react-beautiful-dnd
DragDropContext
Draggable
DropResult
Droppable
DroppableProps
- 在终端中运行以下命令: 或
npm install @hello-pangea/dnd
yarn add @hello-pangea/dnd
- 将所有组件中的所有语句替换为语句。
import { ... } from "react-beautiful-dnd"
import { ... } from "@hello-pangea/dnd"
评论