react dnd中的项目类型存在问题不变违规:必须定义项目类型

问题描述

当我以自己的方式拖动项目时,我正在尝试定义项目类型。但是,如果我那样做并拖动该项目,就会出问题,这表明在删除该项目后,我看到“不变违规:必须定义项目类型”。这意味着我有一个带有ItemTypes的文件,其中定义了所有内容

export const ItemTypes = {
    'CARD': "card",'PHONE': "phone",'WEAPON': "weapon",'FOOD': "food",'DRINK': "drink"
};

在主库存上,项目数组就是这样

  const [items,setItems] = useState([
    {
      type: "PHONE",label: "test",itemname: "test",pieces: 10,itemweight: 0.2
    },{
      type: "CARD",label: "test5",itemname: "test5",pieces: 5,itemweight: 0.2
    }
  ]);

和项目组件,在其中定义要拖动的项目:

const Item = props => {

    const [{ isDragging },drag] = useDrag({
      item: {
        type: ItemTypes[props.type],index: props.index,label: props.label,itemname: props.name,pieces: props.pieces,weight: props.itemweight
      },collect: (monitor) => ({
        isDragging: !!monitor.isDragging()
      })
    });

所以最后,这意味着当我将项目放置在目标容器上时,我收到错误消息“ Invariant Violation:必须定义项目类型”。

解决方法

最近对 useDrag 进行了更改,请参阅: https://github.com/react-dnd/react-dnd/releases/tag/v14.0.0

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...