Я пытаюсь внедрить SignaturePad в свой проект реагирования и могу нарисовать подпись, но не могу получить доступ к свойствам, чтобы очистить или сохранить ее. Я получаю ошибку ниже на ref = {signCanvas}, а также на current.clear() и signCanvas.current.clear() и signCanvas.getTrimmedCanvas().toDataURL("image/png")
Никакая перегрузка не соответствует этому вызову.
Overload 1 of 2, '(props: Readonly<ReactSignatureCanvasProps>): ReactSignatureCanvas', gave the following error.
Type 'MutableRefObject<{}>' is not assignable to type 'string | ((instance: ReactSignatureCanvas | null) => void) | RefObject<ReactSignatureCanvas> | null | undefined'.
Type 'MutableRefObject<{}>' is not assignable to type 'RefObject<ReactSignatureCanvas>'.
Types of property 'current' are incompatible.
Type '{}' is missing the following properties from type 'ReactSignatureCanvas': on, off, clear, isEmpty, and 14 more.
Overload 2 of 2, '(props: ReactSignatureCanvasProps, context?: any): ReactSignatureCanvas', gave the following error.
Type 'MutableRefObject<{}>' is not assignable to type 'string | ((instance: ReactSignatureCanvas | null) => void) | RefObject<ReactSignatureCanvas> | null | undefined'.
Type 'MutableRefObject<{}>' is not assignable to type 'RefObject<ReactSignatureCanvas>'.ts(2769)
index.d.ts(143, 9): The expected type comes from property 'ref' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes<ReactSignatureCanvas> & Readonly<ReactSignatureCanvasProps> & Readonly<...>'
index.d.ts(143, 9): The expected type comes from property 'ref' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes<ReactSignatureCanvas> & Readonly<ReactSignatureCanvasProps> & Readonly<...>'*
Это то, что я реализовал до сих пор, любая помощь будет очень признательна.
const signCanvas = useRef({});
const clear = () => signCanvas.current.clear();
const save = () => console.info(signCanvas.getTrimmedCanvas().toDataURL("image/png"));
<SignaturePad
ref = {signCanvas}
canvasProps = {{ className: "signature__canvas" }}
/>
<Button color='grey' content='Clear' onClick = {clear} />
<Button color='grey' content='Save' onClick = {save} />





Мне удалось это исправить. Если у кого-то такая же проблема, просто нужно добавить ниже для React.MutableRefObject
const signCanvas = React.useRef() as React.MutableRefObject<any>;
и теперь все работает нормально.
const clear = () => signCanvas.current.clear();
const save = () =>
console.info(signCanvas.current.getTrimmedCanvas().toDataURL("image/png"));
Вы можете использовать правильный тип, вам нужно установить: @types/react-signature-canvas, а затем использовать ReactSignatureCanvas вместо любого.
хорошее исправление, чтобы еще больше сузить тип?