useEffectの並び替えとコードのバグを修正

This commit is contained in:
harukin-OneMix4 2023-07-06 03:56:41 +09:00
parent 7e092671a2
commit 420a805f3c

View File

@ -45,8 +45,8 @@ export default function LED_vision(props) {
const { station, navigate, setTrainInfo, EachTrainInfoAsSR, trainDiagram } = const { station, navigate, setTrainInfo, EachTrainInfoAsSR, trainDiagram } =
props; props;
const [stationDiagram, setStationDiagram] = useState({}); //当該駅の全時刻表 const [stationDiagram, setStationDiagram] = useState({}); //当該駅の全時刻表
const [currentTrain, setCurrentTrain] = useState(null); //現在在線中の全列車 const [currentTrain, setCurrentTrain] = useState([]); //現在在線中の全列車 { num: 列車番号, delay: 遅延時分(状態), Pos: 位置情報 }
const [currentTrainLoading, setCurrentTrainLoading] = useState("loading"); const [currentTrainLoading, setCurrentTrainLoading] = useState("loading"); // success, error, loading
const [finalSwitch, setFinalSwitch] = useState(false); const [finalSwitch, setFinalSwitch] = useState(false);
const [trainIDSwitch, setTrainIDSwitch] = useState(false); const [trainIDSwitch, setTrainIDSwitch] = useState(false);
const [trainDescriptionSwitch, setTrainDescriptionSwitch] = useState(false); const [trainDescriptionSwitch, setTrainDescriptionSwitch] = useState(false);
@ -66,6 +66,26 @@ export default function LED_vision(props) {
setStationDiagram(returnData); setStationDiagram(returnData);
}, [trainDiagram, station]); }, [trainDiagram, station]);
const [trainTimeAndNumber, setTrainTimeAndNumber] = useState(null);
useEffect(() => {
//現在の駅に停車する列車から時刻を切り出してLEDベースにフォーマット
if (objectIsEmpty(stationDiagram)) return () => {};
const getTimeData = getTime(stationDiagram, station);
setTrainTimeAndNumber(getTimeData);
}, [stationDiagram]);
const [selectedTrain, setSelectedTrain] = useState([]);
useEffect(() => {
if (!trainTimeAndNumber) return () => {};
if (!currentTrain) return () => {};
const data = trainTimeAndNumber
.filter((d) => currentTrain.map((m) => m.num).includes(d.train))
.filter(timeFiltering)
.filter((d) => !!finalSwitch || d.lastStation != "当駅止");
setSelectedTrain(data);
}, [trainTimeAndNumber, currentTrain, finalSwitch]);
const getCurrentTrain = () => const getCurrentTrain = () =>
fetch( fetch(
"https://train.jr-shikoku.co.jp/g?arg1=train&arg2=train", "https://train.jr-shikoku.co.jp/g?arg1=train&arg2=train",
@ -120,15 +140,6 @@ export default function LED_vision(props) {
}); });
}; };
const [trainTimeAndNumber, setTrainTimeAndNumber] = useState(null);
useEffect(() => {
//現在の駅に停車する列車から時刻を切り出してLEDベースにフォーマット
if (objectIsEmpty(stationDiagram)) return () => {};
const getTimeData = getTime(stationDiagram, station);
setTrainTimeAndNumber(getTimeData);
}, [stationDiagram]);
const timeFiltering = (d) => { const timeFiltering = (d) => {
const date = new Date(); const date = new Date();
const newDate = new Date(); const newDate = new Date();
@ -146,16 +157,6 @@ export default function LED_vision(props) {
return false; return false;
}; };
const [selectedTrain, setSelectedTrain] = useState([]);
useEffect(() => {
if (!trainTimeAndNumber) return () => {};
if (!currentTrain) return () => {};
const data = trainTimeAndNumber
.filter((d) => currentTrain.map((m) => m.num).includes(d.train))
.filter(timeFiltering)
.filter((d) => !!finalSwitch || d.lastStation != "当駅止");
setSelectedTrain(data);
}, [trainTimeAndNumber, currentTrain, finalSwitch]);
return ( return (
<View <View
style={{ style={{
@ -176,10 +177,9 @@ export default function LED_vision(props) {
d={d} d={d}
trainIDSwitch={trainIDSwitch} trainIDSwitch={trainIDSwitch}
trainDescriptionSwitch={trainDescriptionSwitch} trainDescriptionSwitch={trainDescriptionSwitch}
props={props} station={station}
currentTrain={currentTrain} currentTrain={currentTrain}
customTrainDataDetector={customTrainDataDetector} customTrainDataDetector={customTrainDataDetector}
navigate={navigate}
setTrainInfo={setTrainInfo} setTrainInfo={setTrainInfo}
EachTrainInfoAsSR={EachTrainInfoAsSR} EachTrainInfoAsSR={EachTrainInfoAsSR}
/> />
@ -279,17 +279,13 @@ const EachData = ({
d, d,
trainIDSwitch, trainIDSwitch,
trainDescriptionSwitch, trainDescriptionSwitch,
props, station,
currentTrain, currentTrain,
customTrainDataDetector, customTrainDataDetector,
navigate,
setTrainInfo, setTrainInfo,
EachTrainInfoAsSR, EachTrainInfoAsSR,
}) => { }) => {
const openTrainInfo = (d) => { const openTrainInfo = (d) => {
console.log(train);
console.log(d);
console.log(currentTrain);
let TrainNumber = ""; let TrainNumber = "";
if (train.trainNumDistance != undefined) { if (train.trainNumDistance != undefined) {
const timeInfo = const timeInfo =
@ -329,7 +325,7 @@ const EachData = ({
} }
}; };
const trainDelayStatus = getTrainDelayStatus( const trainDelayStatus = getTrainDelayStatus(
checkDuplicateTrainData(currentTrain.filter((a) => a.num == train)) checkDuplicateTrainData(currentTrain.filter((a) => a.num == d.train))
); );
return ( return (
<> <>