无法去除移动对象的痕迹并且 canvas 的 75% 不起作用

traces of a moved object cannot be removed and 75% of canvas is not working

黑色边框是整个canvas区域

工作示例在这里Canvas Basic Snack

import React, { useState } from "react";
import { Text, View } from "react-native";
import Canvas from "react-native-canvas";

const App = () => {
  const [xAxis, setXAxis] = useState(100);
  const [yAxis, setYAxis] = useState(100);
  var ctx = "";

  const handleCanvas = (canvas) => {
    if (canvas) {
      ctx = canvas.getContext("2d");
      ctx.fillStyle = "blue";
      ctx.fillRect(xAxis - 50, yAxis - 50, xAxis, yAxis);
    }
  };

  const onstart = (evt) => {
    console.log("start", evt.nativeEvent.locationX);
    ctx.clearRect(xAxis - 50, yAxis - 50, xAxis, yAxis);
    setXAxis(evt.nativeEvent.locationX);
    setYAxis(evt.nativeEvent.locationY);
  };

  const onmove = (evt) => {
    console.log("move", evt.nativeEvent.locationX);
    ctx.clearRect(xAxis - 50, yAxis - 50, xAxis, yAxis);
    setXAxis(evt.nativeEvent.locationX);
    setYAxis(evt.nativeEvent.locationY);
  };

  const onrelease = (evt) => {
    console.log("release", evt.nativeEvent.locationX);
  };

  return (
    <View
      onStartShouldSetResponder={() => true}
      onResponderStart={onstart}
      onResponderMove={onmove}
      onResponderRelease={onrelease}
      style={{ flex: 1, alignItems: "center", backgroundColor: "green" }}
    >
      <Text>Drawing Pad</Text>
      <Canvas
        ref={handleCanvas}
        style={{ flex: 1, borderColor: "#000", borderWidth: 1 }}
      />
    </View>
  );
};

export default App;

我刚得到答案,因为这个库缺少适当的文档,所以我不会删除这个问题。

改变,ref={handleCanvas}ref={(e) => handleCanvas(e, xAxis, yAxis)}
并且,handleCanvas = (canvas)handleCanvas = (canvas, x, y)
最后补充,

      canvas.width = 350;
      canvas.height = 500;