reactjs - Nepodarilo sa nájsť menný priestor 'ctx' pri vytváraní Context s react - typescript
Pracujem na projekte s react pomocou typescript a mám problém zistiť, prečo sa táto chyba vyskytuje, v podstate nemôžem použiť žiadne príklady createContext, ktoré som našiel na internete kvôli tomu. Tento konkrétny som získal odtiaľto: https://github.com/typescript-cheatsheets/react-typescript-cheatsheet Snažím sa použiť ten, ktorý je zobrazený v sekcii Context.
import * as React from "react";
export function createCtx<A>(defaultValue: A) {
type UpdateType = React.Dispatch<React.SetStateAction<typeof defaultValue>>;
const defaultUpdate: UpdateType = () => defaultValue;
const ctx = React.createContext({
state: defaultValue,
update: defaultUpdate
});
function Provider(props: React.PropsWithChildren<{}>) {
const [state, update] = React.useState(defaultValue);
return <ctx.Provider value={{ state, update }} {...props} />;
}
return [ctx, Provider] as [typeof ctx, typeof Provider];
}
Problém je v tom, že zakaždým sa zobrazuje táto chyba Nemôžem nájsť názvový priestor ctx na riadku:
return <ctx.Provider value={{ state, update }} {...props} />;
Stále nedokážem príjsť na to prečo, niekto sa môže pozrieť, či robím niečo zle? Toto je môj tsconfig.json:
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": false,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",
"noImplicitAny": false,
"strictNullChecks": false
},
"include": [
"src"
]
}
Akákoľvek pomoc by bola ocenená!
Odpoveď č. 1
Prípona vášho súboru je s najväčšou pravdepodobnosťou .ts namiesto .tsx.
Preto TypeScript interpretuje <ctx.Provider ako typové prevádzanie a snaží sa nájsť typ Provider v názvovom priestore ctx.