//@flow
import React, { useRef, useState, useEffect, useCallback } from 'react';
import { SafeAreaView, Image } from 'react-native';
import ViewShot from 'react-native-view-shot';
import Canvas from 'react-native-canvas';
const dimension = { width: 300, height: 300 };
const CanvasRendering = ({ onDrawn }) => {
const ref = useRef();
useEffect(() => {
const ctx = ref.current.getContext('2d');
ctx.fillStyle = '#eee';
ctx.fillRect(0, 0, ref.current.width, ref.current.height);
ctx.fillStyle = 'red';
ctx.fillRect(120, 30, 60, 60);
ctx.fillStyle = 'blue';
ctx.fillRect(140, 50, 60, 60);
const timeout = setTimeout(onDrawn, 1000); // hack. react-native-canvas have no way to tell when it's executed
return () => clearTimeout(timeout);
}, [onDrawn]);
return ;
};
const CanvasExample = () => {
const [source, setSource] = useState(null);
const viewShotRef = useRef();
const onCapture = useCallback(() => {
viewShotRef.current.capture().then(uri => setSource({ uri }));
}, []);
return (
);
};
CanvasExample.navigationOptions = {
title: 'react-native-canvas',
};
export default CanvasExample;