init commit,
This commit is contained in:
66
002_source/ionic_mobile/src/contexts/Helloworld.tsx
Normal file
66
002_source/ionic_mobile/src/contexts/Helloworld.tsx
Normal file
@@ -0,0 +1,66 @@
|
||||
import React, { createContext, ReactNode, useContext, useState } from 'react';
|
||||
|
||||
const MyContext = createContext<MyContextProps | undefined>(undefined);
|
||||
|
||||
export const MyProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
|
||||
const [my_context, setMyContext] = useState<string>('initial value');
|
||||
|
||||
const [test_first, setTestFirst] = useState<IFirst | undefined>(undefined);
|
||||
const [test_second, setTestSecond] = useState<ISecond | undefined>(undefined);
|
||||
const [test_third, setTestThird] = useState<IThird | undefined>(undefined);
|
||||
|
||||
return (
|
||||
<MyContext.Provider
|
||||
value={{
|
||||
my_context,
|
||||
setMyContext,
|
||||
//
|
||||
test_first,
|
||||
setTestFirst,
|
||||
test_second,
|
||||
setTestSecond,
|
||||
test_third,
|
||||
setTestThird,
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</MyContext.Provider>
|
||||
);
|
||||
};
|
||||
|
||||
export const useMyContext = (): MyContextProps => {
|
||||
const context = useContext(MyContext);
|
||||
if (!context) {
|
||||
throw new Error('useMyContext must be used within a MyProvider');
|
||||
}
|
||||
return context;
|
||||
};
|
||||
|
||||
interface MyContextProps {
|
||||
my_context: string;
|
||||
setMyContext: React.Dispatch<React.SetStateAction<string>>;
|
||||
//
|
||||
test_first: IFirst | undefined;
|
||||
setTestFirst: React.Dispatch<React.SetStateAction<IFirst | undefined>>;
|
||||
test_second: ISecond | undefined;
|
||||
setTestSecond: React.Dispatch<React.SetStateAction<ISecond | undefined>>;
|
||||
test_third: IThird | undefined;
|
||||
setTestThird: React.Dispatch<React.SetStateAction<IThird | undefined>>;
|
||||
}
|
||||
|
||||
interface IFirst {
|
||||
test_s: string;
|
||||
test_i: number;
|
||||
}
|
||||
|
||||
interface ISecond {
|
||||
test_s: string;
|
||||
test_i: number;
|
||||
content: IFirst[] | [];
|
||||
}
|
||||
|
||||
interface IThird {
|
||||
test_s: string;
|
||||
test_i: number;
|
||||
content: ISecond[] | [];
|
||||
}
|
Reference in New Issue
Block a user