import React, { Component } from 'react'; import { PanResponder } from 'react-native'; import Svg, { Path, Text, G, Line, Polyline } from 'react-native-svg'; class PanExample extends Component { static title = 'Bind PanResponder on the SVG Shape'; constructor() { super(...arguments); this.state = { x: 0, y: 0, hover: false }; } componentWillMount = () => { this._panResponder = PanResponder.create({ onStartShouldSetPanResponder: this._alwaysTrue, onMoveShouldSetPanResponder: this._alwaysTrue, onPanResponderGrant: this._handlePanResponderGrant, onPanResponderMove: this._handlePanResponderMove, onPanResponderRelease: this._handlePanResponderEnd, onPanResponderTerminate: this._handlePanResponderEnd }); }; _previousLeft = 0; _previousTop = 0; _alwaysTrue = () => true; _handlePanResponderMove = (e, gestureState) => { this.setState({ x: this._previousLeft + gestureState.dx, y: this._previousTop + gestureState.dy }); }; _handlePanResponderGrant = () => { this.root.setNativeProps({ opacity: 0.5 }); }; _handlePanResponderEnd = (e, gestureState) => { this.root.setNativeProps({ opacity: 1 }); this._previousLeft += gestureState.dx; this._previousTop += gestureState.dy; }; render () { return {this.root = ele;}} x={this.state.x} y={this.state.y} > STAR ; } } const icon = ; const samples = [ PanExample ]; const scroll = false; export { icon, samples, scroll };