ふぁぼstateをトップ階層に移動し各コンポーネントで共有化
This commit is contained in:
parent
746c996cba
commit
7dc72ef433
52
App.js
52
App.js
@ -9,6 +9,7 @@ import { AntDesign, Ionicons } from "@expo/vector-icons";
|
|||||||
import { Platform, UIManager } from "react-native";
|
import { Platform, UIManager } from "react-native";
|
||||||
import { UpdateAsync } from "./UpdateAsync.js";
|
import { UpdateAsync } from "./UpdateAsync.js";
|
||||||
import { getStationList2 } from "./lib/getStationList2";
|
import { getStationList2 } from "./lib/getStationList2";
|
||||||
|
import { AS } from "./storageControl";
|
||||||
import Apps from "./Apps";
|
import Apps from "./Apps";
|
||||||
import TNDView from "./ndView";
|
import TNDView from "./ndView";
|
||||||
import TrainBase from "./trainbaseview";
|
import TrainBase from "./trainbaseview";
|
||||||
@ -29,6 +30,16 @@ export default function App() {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
UpdateAsync();
|
UpdateAsync();
|
||||||
}, []);
|
}, []);
|
||||||
|
const [favoriteStation, setFavoriteStation] = useState([]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
AS.getItem("favoriteStation")
|
||||||
|
.then((d) => {
|
||||||
|
const returnData = JSON.parse(d);
|
||||||
|
setFavoriteStation(returnData);
|
||||||
|
})
|
||||||
|
.catch((d) => console.log(d));
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<NavigationContainer name="Root" style={{ flex: 1 }}>
|
<NavigationContainer name="Root" style={{ flex: 1 }}>
|
||||||
@ -42,7 +53,13 @@ export default function App() {
|
|||||||
tabBarIcon: initIcon("barchart", "AntDesign"),
|
tabBarIcon: initIcon("barchart", "AntDesign"),
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{(props) => <Top {...props} />}
|
{(props) => (
|
||||||
|
<Top
|
||||||
|
{...props}
|
||||||
|
favoriteStation={favoriteStation}
|
||||||
|
setFavoriteStation={setFavoriteStation}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</Tab.Screen>
|
</Tab.Screen>
|
||||||
<Tab.Screen
|
<Tab.Screen
|
||||||
name="menuPage"
|
name="menuPage"
|
||||||
@ -53,7 +70,13 @@ export default function App() {
|
|||||||
tabBarIcon: initIcon("ios-radio", "Ionicons"),
|
tabBarIcon: initIcon("ios-radio", "Ionicons"),
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{(props) => <MenuPage {...props} />}
|
{(props) => (
|
||||||
|
<MenuPage
|
||||||
|
{...props}
|
||||||
|
favoriteStation={favoriteStation}
|
||||||
|
setFavoriteStation={setFavoriteStation}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</Tab.Screen>
|
</Tab.Screen>
|
||||||
<Tab.Screen
|
<Tab.Screen
|
||||||
name="home"
|
name="home"
|
||||||
@ -88,7 +111,7 @@ const initIcon = (name, type) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const Top = ({ navigation }) => {
|
const Top = ({ navigation, favoriteStation, setFavoriteStation }) => {
|
||||||
const webview = useRef();
|
const webview = useRef();
|
||||||
|
|
||||||
//地図用
|
//地図用
|
||||||
@ -116,7 +139,14 @@ const Top = ({ navigation }) => {
|
|||||||
headerTransparent: true,
|
headerTransparent: true,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{(props) => <Apps {...props} webview={webview} />}
|
{(props) => (
|
||||||
|
<Apps
|
||||||
|
{...props}
|
||||||
|
webview={webview}
|
||||||
|
favoriteStation={favoriteStation}
|
||||||
|
setFavoriteStation={setFavoriteStation}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</Stack.Screen>
|
</Stack.Screen>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
name="trainbase"
|
name="trainbase"
|
||||||
@ -126,7 +156,7 @@ const Top = ({ navigation }) => {
|
|||||||
...TransitionPresets.SlideFromRightIOS,
|
...TransitionPresets.SlideFromRightIOS,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{(props) => <TrainBase {...props} webview={webview} />}
|
{(props) => <TrainBase {...props} />}
|
||||||
</Stack.Screen>
|
</Stack.Screen>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
name="howto"
|
name="howto"
|
||||||
@ -158,13 +188,15 @@ const Top = ({ navigation }) => {
|
|||||||
{...props}
|
{...props}
|
||||||
webview={webview}
|
webview={webview}
|
||||||
stationData={mapsStationData}
|
stationData={mapsStationData}
|
||||||
|
favoriteStation={favoriteStation}
|
||||||
|
setFavoriteStation={setFavoriteStation}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</Stack.Screen>
|
</Stack.Screen>
|
||||||
</Stack.Navigator>
|
</Stack.Navigator>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
function MenuPage() {
|
function MenuPage({ favoriteStation, setFavoriteStation }) {
|
||||||
return (
|
return (
|
||||||
<Stack.Navigator>
|
<Stack.Navigator>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
@ -175,7 +207,13 @@ function MenuPage() {
|
|||||||
headerTransparent: true,
|
headerTransparent: true,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{(props) => <Menu {...props} />}
|
{(props) => (
|
||||||
|
<Menu
|
||||||
|
{...props}
|
||||||
|
favoriteStation={favoriteStation}
|
||||||
|
setFavoriteStation={setFavoriteStation}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</Stack.Screen>
|
</Stack.Screen>
|
||||||
<Stack.Screen name="setting" options={optionData}>
|
<Stack.Screen name="setting" options={optionData}>
|
||||||
{(props) => <Setting {...props} />}
|
{(props) => <Setting {...props} />}
|
||||||
|
9
Apps.js
9
Apps.js
@ -19,7 +19,12 @@ import { getStationList2 } from "./lib/getStationList2";
|
|||||||
import StatusbarDetect from './StatusbarDetect';
|
import StatusbarDetect from './StatusbarDetect';
|
||||||
var Status = StatusbarDetect(); */
|
var Status = StatusbarDetect(); */
|
||||||
|
|
||||||
export default function Apps({ navigation, webview }) {
|
export default function Apps({
|
||||||
|
navigation,
|
||||||
|
webview,
|
||||||
|
favoriteStation,
|
||||||
|
setFavoriteStation,
|
||||||
|
}) {
|
||||||
const { navigate } = navigation;
|
const { navigate } = navigation;
|
||||||
var urlcache = "";
|
var urlcache = "";
|
||||||
|
|
||||||
@ -192,6 +197,8 @@ export default function Apps({ navigation, webview }) {
|
|||||||
StationBoardAcSR={StationBoardAcSR}
|
StationBoardAcSR={StationBoardAcSR}
|
||||||
currentStation={stationBoardData}
|
currentStation={stationBoardData}
|
||||||
originalStationList={originalStationList}
|
originalStationList={originalStationList}
|
||||||
|
favoriteStation={favoriteStation}
|
||||||
|
setFavoriteStation={setFavoriteStation}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
|
@ -7,7 +7,13 @@ import Sign from "../../components/駅名表/Sign";
|
|||||||
import { TicketBox } from "../atom/TicketBox";
|
import { TicketBox } from "../atom/TicketBox";
|
||||||
|
|
||||||
export const StationDeteilView = (props) => {
|
export const StationDeteilView = (props) => {
|
||||||
const { StationBoardAcSR, currentStation, originalStationList } = props;
|
const {
|
||||||
|
StationBoardAcSR,
|
||||||
|
currentStation,
|
||||||
|
originalStationList,
|
||||||
|
favoriteStation,
|
||||||
|
setFavoriteStation,
|
||||||
|
} = props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ActionSheet
|
<ActionSheet
|
||||||
@ -41,6 +47,8 @@ export const StationDeteilView = (props) => {
|
|||||||
<Sign
|
<Sign
|
||||||
currentStation={currentStation}
|
currentStation={currentStation}
|
||||||
originalStationList={originalStationList}
|
originalStationList={originalStationList}
|
||||||
|
favoriteStation={favoriteStation}
|
||||||
|
setFavoriteStation={setFavoriteStation}
|
||||||
oP={() => Linking.openURL(currentStation[0].StationTimeTable)}
|
oP={() => Linking.openURL(currentStation[0].StationTimeTable)}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
@ -8,20 +8,14 @@ import { AS } from "../storageControl";
|
|||||||
import { news } from "../config/newsUpdate";
|
import { news } from "../config/newsUpdate";
|
||||||
import { getStationList, lineList } from "../lib/getStationList";
|
import { getStationList, lineList } from "../lib/getStationList";
|
||||||
var Status = StatusbarDetect();
|
var Status = StatusbarDetect();
|
||||||
export default function FavoriteList({ navigation, webview, stationData }) {
|
export default function FavoriteList({
|
||||||
|
navigation,
|
||||||
|
webview,
|
||||||
|
stationData,
|
||||||
|
favoriteStation,
|
||||||
|
setFavoriteStation,
|
||||||
|
}) {
|
||||||
const { navigate } = navigation;
|
const { navigate } = navigation;
|
||||||
const [favoriteStation, setFavoriteStation] = useState([]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
AS.getItem("favoriteStation")
|
|
||||||
.then((d) => {
|
|
||||||
console.log(d);
|
|
||||||
const returnData = JSON.parse(d);
|
|
||||||
console.log(returnData);
|
|
||||||
setFavoriteStation(returnData);
|
|
||||||
})
|
|
||||||
.catch((d) => console.log(d));
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={{ height: "100%", backgroundColor: "#0099CC" }}>
|
<View style={{ height: "100%", backgroundColor: "#0099CC" }}>
|
||||||
|
@ -17,24 +17,19 @@ import { useInterval } from "../../lib/useInterval";
|
|||||||
import { AS } from "../../storageControl";
|
import { AS } from "../../storageControl";
|
||||||
|
|
||||||
export default function Sign(props) {
|
export default function Sign(props) {
|
||||||
const { currentStation, originalStationList, oP } = props;
|
const {
|
||||||
|
currentStation,
|
||||||
|
originalStationList,
|
||||||
|
oP,
|
||||||
|
favoriteStation,
|
||||||
|
setFavoriteStation,
|
||||||
|
} = props;
|
||||||
const [nexPrePosition, setNexPrePosition] = useState(0);
|
const [nexPrePosition, setNexPrePosition] = useState(0);
|
||||||
|
|
||||||
const [preStation, setPreStation] = useState();
|
const [preStation, setPreStation] = useState();
|
||||||
const [nexStation, setNexStation] = useState();
|
const [nexStation, setNexStation] = useState();
|
||||||
const [testButtonStatus, setTestButtonStatus] = useState(false);
|
const [testButtonStatus, setTestButtonStatus] = useState(false);
|
||||||
const [favoriteStation, setFavoriteStation] = useState([]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
AS.getItem("favoriteStation")
|
|
||||||
.then((d) => {
|
|
||||||
console.log(d);
|
|
||||||
const returnData = JSON.parse(d);
|
|
||||||
console.log(returnData);
|
|
||||||
setFavoriteStation(returnData);
|
|
||||||
})
|
|
||||||
.catch((d) => console.log(d));
|
|
||||||
}, []);
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const isFavorite = favoriteStation.filter((d) => {
|
const isFavorite = favoriteStation.filter((d) => {
|
||||||
const compare = JSON.stringify(d);
|
const compare = JSON.stringify(d);
|
||||||
@ -116,12 +111,14 @@ export default function Sign(props) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
AS.setItem("favoriteStation", JSON.stringify(otherData));
|
AS.setItem("favoriteStation", JSON.stringify(otherData));
|
||||||
|
setFavoriteStation(otherData);
|
||||||
} else {
|
} else {
|
||||||
lottieRef.current.play(7, 35);
|
lottieRef.current.play(7, 35);
|
||||||
let ret = favoriteStation;
|
let ret = favoriteStation;
|
||||||
console.log(currentStation);
|
console.log(currentStation);
|
||||||
ret.push(currentStation);
|
ret.push(currentStation);
|
||||||
AS.setItem("favoriteStation", JSON.stringify(ret));
|
AS.setItem("favoriteStation", JSON.stringify(ret));
|
||||||
|
setFavoriteStation(ret);
|
||||||
}
|
}
|
||||||
setTestButtonStatus(!testButtonStatus);
|
setTestButtonStatus(!testButtonStatus);
|
||||||
}}
|
}}
|
||||||
|
6
menu.js
6
menu.js
@ -38,6 +38,8 @@ import useInterval from "./lib/useInterval";
|
|||||||
export default function Menu(props) {
|
export default function Menu(props) {
|
||||||
const {
|
const {
|
||||||
navigation: { navigate },
|
navigation: { navigate },
|
||||||
|
favoriteStation,
|
||||||
|
setFavoriteStation,
|
||||||
} = props;
|
} = props;
|
||||||
const JRSTraInfoEXAcSR = useRef(null);
|
const JRSTraInfoEXAcSR = useRef(null);
|
||||||
const StationBoardAcSR = useRef(null);
|
const StationBoardAcSR = useRef(null);
|
||||||
@ -162,6 +164,8 @@ export default function Menu(props) {
|
|||||||
<Sign
|
<Sign
|
||||||
currentStation={currentStation}
|
currentStation={currentStation}
|
||||||
originalStationList={originalStationList}
|
originalStationList={originalStationList}
|
||||||
|
favoriteStation={favoriteStation}
|
||||||
|
setFavoriteStation={setFavoriteStation}
|
||||||
oP={StationBoardAcSR.current?.setModalVisible}
|
oP={StationBoardAcSR.current?.setModalVisible}
|
||||||
/>
|
/>
|
||||||
<LED_vision station={currentStation[0]} navigate={navigate} />
|
<LED_vision station={currentStation[0]} navigate={navigate} />
|
||||||
@ -458,6 +462,8 @@ export default function Menu(props) {
|
|||||||
StationBoardAcSR={StationBoardAcSR}
|
StationBoardAcSR={StationBoardAcSR}
|
||||||
currentStation={currentStation}
|
currentStation={currentStation}
|
||||||
originalStationList={originalStationList}
|
originalStationList={originalStationList}
|
||||||
|
favoriteStation={favoriteStation}
|
||||||
|
setFavoriteStation={setFavoriteStation}
|
||||||
/>
|
/>
|
||||||
<JRSTraInfo
|
<JRSTraInfo
|
||||||
JRSTraInfoEXAcSR={JRSTraInfoEXAcSR}
|
JRSTraInfoEXAcSR={JRSTraInfoEXAcSR}
|
||||||
|
Loading…
Reference in New Issue
Block a user