42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import React, { FC, useEffect, useState } from "react";
 | |
| import { Ionicons } from "@expo/vector-icons";
 | |
| import { LayoutAnimation } from "react-native";
 | |
| import { SheetManager } from "react-native-actions-sheet";
 | |
| import { getType } from "../../../lib/eachTrainInfoCoreLib/getType";
 | |
| 
 | |
| type Props = {
 | |
|   data: { trainNum: string; limited: string };
 | |
|   navigate: any;
 | |
|   from: string;
 | |
| };
 | |
| export const TrainViewIcon: FC<Props> = ({ data, navigate, from }) => {
 | |
|   const [isTrainView, setIsTrainView] = useState(false);
 | |
|   //トレインビュー表示対象(特急、マリン)かを判定
 | |
|   useEffect(() => {
 | |
|     if (!data.limited) return () => {};
 | |
|     setIsTrainView(
 | |
|       getType(data.limited.split(":")[0]) &&
 | |
|         !data.limited.split(":")[1].match("サンポート")
 | |
|     );
 | |
|   }, [data.limited]);
 | |
|   const onPressTrainView = () => {
 | |
|     LayoutAnimation.easeInEaseOut(); //setLoadingDelayData(true);
 | |
|     navigate("trainbase", {
 | |
|       info: "train.html?tn=" + data.trainNum,
 | |
|       from,
 | |
|     });
 | |
|     SheetManager.hide("EachTrainInfo");
 | |
|   };
 | |
|   return isTrainView ? (
 | |
|     <Ionicons
 | |
|       name="subway"
 | |
|       color="white"
 | |
|       size={30}
 | |
|       style={{ margin: 5 }}
 | |
|       onPress={onPressTrainView}
 | |
|     />
 | |
|   ) : (
 | |
|     <></>
 | |
|   );
 | |
| };
 |