reactjs - Typescript useState ReferenceError: string განსაზღვრულია
import React, {
FunctionComponent,
useState,
useEffect
} from 'react'
const SearchBar: FunctionComponent = () => {
const [searchValue, setSearchValue] = useState < string > ('')
const [isSuggestionOpen, setIsSuggestionOpen] = useState < boolean > (false)
async function showSuggestedWords(event) {
setSearchValue(event.target.value)
try {
const res = await fetch(`https://www.someurl.com/q=${searchValue}`)
const suggestedWordsArray = await res.json()
// setSuggestedWords(suggestedWordsArray[1].slice(0, 10))
setIsSuggestionOpen(true)
return
} catch {
console.log('error fetching suggested results')
setIsSuggestionOpen(false)
}
}
return ( <
div >
<
form action = "/Controller"
method = "get" >
<
input name = "q"
type = "text"
value = {
searchValue
}
onChange = {
showSuggestedWords
}
autoComplete = "off"
autoCapitalize = "off"
autoCorrect = "off"
spellCheck = "false"
placeholder = "Search here" /
>
<
button type = "submit" >
Submit <
/button> <
/form> <
/div>
)
}
ReactDOM.render( <
div > < h1 > Hello, world! < /h1> <SearchBar / > < /div>,
document.getElementById('root')
)<script src="https://cdnjs.cloudflare.com/ajax/libs/typescript/4.0.3/typescript.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>მე ახალი მაქვს TypeScript-ში, ასე რომ ეს შეიძლება აშკარა გადაწყვეტილება იყოს.
მე მაქვს პროექტი, შექმნილი React, Nextjs და Typescript-თან ერთად.
მოდული ტაიპსქრიპტს ვიყენებ ჩემი მდგომარეობის ტიპის განსაზღვრას ასე: const [searchValue, setSearchValue]=useState<string>('')
და მიჩნდება შეცდომა შესრულების დროს: ReferenceError: string არ არის განსაზღვრული.
მერე ვერ მივხვდი, რა არის გართულება. ყველგან რაც შევამოწმე, ურჩევდნენ მდგომარეობის ტიპის განსაზღვრას ისეთად, როგორც ზემოთ გავაკეთე.
აქ არის ჩემი typescript კონფიგურაცია:
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"strict": false,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"noImplicitAny": true,
"allowSyntheticDefaultImports": true
},
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.tsx"
],
"exclude": [
"node_modules"
]
}
მესამე ვერ მაქვს webpack კონფიგურაცია, რადგან ისინი მოყვება Nextjs-თან (რომელიც უკვე კონფიგურირებულია მუშაობისთვის typescript-თან.)
მე ნამდვილად მაქვს დაყენებული @types/react @types/react-dom @types/node.
არაფერი მინიშნება?
პასუხი #1
გამოჩნდა, რომ ეს იყო გარკვეული არასათანადო კონფიგურაცია ჩემს babel.config.json-ში
მე ყველაფერი მოვხსენი და მხოლოდ ეს ხაზები დავიტოვე:
{
"presets": ["next/babel"],
"env": {
"test": {
"presets": ["next/babel"]
}
}
}
ამ გზით მე ჯერ კიდევ შემიძლია ჩემს Jest ტესტების შესრულება.
იმედია, ეს შეიძლება გამოადგეს ვინმეს მსგავსი სიტუაციაში :)
