30 lines
890 B
JavaScript
30 lines
890 B
JavaScript
import React, { createContext, useContext, useState, useEffect } from "react";
|
|
import useInterval from "../lib/useInterval";
|
|
const initialState = {
|
|
areaInfo: "",
|
|
setAreainfo: () => {},
|
|
};
|
|
|
|
const AreaInfoContext = createContext(initialState);
|
|
|
|
export const useAreaInfo = () => {
|
|
return useContext(AreaInfoContext);
|
|
};
|
|
|
|
export const AreaInfoProvider = ({ children }) => {
|
|
const [areaInfo, setAreaInfo] = useState("");
|
|
const getAreaData = () =>
|
|
fetch(
|
|
"https://script.google.com/macros/s/AKfycbz80LcaEUrhnlEsLkJy0LG2IRO3DBVQhfNmN1d_0f_HvtsujNQpxM90SrV9yKWH_JG1Ww/exec"
|
|
)
|
|
.then((d) => d.text())
|
|
.then((d) => setAreaInfo(d));
|
|
useEffect(getAreaData, []);
|
|
useInterval(getAreaData, 60000); //60秒毎に全在線列車取得
|
|
return (
|
|
<AreaInfoContext.Provider value={{ areaInfo, setAreaInfo }}>
|
|
{children}
|
|
</AreaInfoContext.Provider>
|
|
);
|
|
};
|