React native:为数组中的每个项目设置坐标

React native: Set the coordinates for each item in array

我尝试获取每个可拖动项目的坐标。
现在我得到了坐标,但我只得到了所有项目的一个值,但我想要每个项目的值。

这是我的数据

  const data = [
    {
      name: " ",
      X: 680,
      Y: 80,
      newposX: positionX,
      newposY: positionY,
    },
    {
      name: " ",
      X: 550 ,
      Y: 80,
      newposX: positionX,
      newposY: positionY,
    },
    {
      name: " ",
      X: 550 ,
      Y: 80,
      newposX: positionX,
      newposY: positionY,
    },
  ];

这里我打印出一个可拖动元素中的数据

            {data.map((item, key) => (
             <Draggable
                x={item.X}
                y={item.Y}
                renderColor="blue"
                renderSize={50}
                isCircle
                textcolor="#000000"
                renderText={item.name}
                onDragRelease={e => {
                  setPositionY(e.nativeEvent.pageY);
                  setPositionX(e.nativeEvent.pageX);
                }}
                />
              ))}

在“onDragRelease”上,我通过获取坐标来设置我的位置。但在这里我也想为每个项目设置位置。但我不明白我在工作。有人知道我应该做什么吗?

在您的 data.map 函数中,您将 item 的索引声明为变量 key。您可以使用它来让新的 setItemPosition 使用新位置更新您的数据数组。

const setItemPosition = (key, x, y) => {
  const updatedData = [...data]
  const item = data[key];
  item.X = x
  item.Y = y
  const updatedData[key] = item
  
  setData(updatedData) // <-- This is your "setState" function for the data array.
}

// Use it in your draggable like this:

            {data.map((item, key) => (
             <Draggable
                x={item.X}
                y={item.Y}
                renderColor="blue"
                renderSize={50}
                isCircle
                textcolor="#000000"
                renderText={item.name}
                onDragRelease={e => {
                  setItemPosition(key, e.nativeEvent.pageX, e.nativeEvent.pageY);
                }}
                />
              ))}