- TouchableOpacityを使用する方法: TouchableOpacityコンポーネントを使用してSVG要素をラップし、そのonPressプロパティにハンドラ関数を指定します。
import React from 'react';
import { TouchableOpacity, View } from 'react-native';
import Svg, { Circle } from 'react-native-svg';
const MyComponent = () => {
const handlePress = () => {
console.log('SVGが押されました');
};
return (
<TouchableOpacity onPress={handlePress}>
<View>
<Svg width={100} height={100}>
<Circle cx={50} cy={50} r={50} fill="blue" />
</Svg>
</View>
</TouchableOpacity>
);
};
export default MyComponent;
- TouchableWithoutFeedbackを使用する方法: TouchableWithoutFeedbackコンポーネントを使用すると、不透明な要素の上でのタッチイベントを検知できます。
import React from 'react';
import { TouchableWithoutFeedback, View } from 'react-native';
import Svg, { Circle } from 'react-native-svg';
const MyComponent = () => {
const handlePress = () => {
console.log('SVGが押されました');
};
return (
<TouchableWithoutFeedback onPress={handlePress}>
<View>
<Svg width={100} height={100}>
<Circle cx={50} cy={50} r={50} fill="blue" />
</Svg>
</View>
</TouchableWithoutFeedback>
);
};
export default MyComponent;
- PanResponderを使用する方法: PanResponderを使用してSVG要素にジェスチャーイベントを追加することもできます。以下の例では、SVG要素がドラッグされたときにコンソールにメッセージを表示します。
import React from 'react';
import { View, PanResponder } from 'react-native';
import Svg, { Circle } from 'react-native-svg';
const MyComponent = () => {
const handlePanResponderMove = () => {
console.log('SVGがドラッグされました');
};
const panResponder = PanResponder.create({
onMoveShouldSetPanResponder: () => true,
onPanResponderMove: handlePanResponderMove,
});
return (
<View {...panResponder.panHandlers}>
<Svg width={100} height={100}>
<Circle cx={50} cy={50} r={50} fill="blue" />
</Svg>
</View>
);
};
export default MyComponent;
これらの方法を使用して、React NativeでSVG要素のOnPressイベントを処理することができます。適切な方法を選択し、プロジェクトに組み込んでください。