如何解释我收到的以下错误?
How do I interpret the following error I've received?
我正在做一个项目,这样我可以更加熟悉编写代码。我是初学者,希望尽可能多地了解。我不相信我有任何拼写错误。有人会解释我到目前为止的代码有什么问题吗?
I received this error message: "import and export may only appear at the top level."
import React, { useState, useEffect } from "react";`enter code here`
import pet, { ANIMALS } from "@frontendmasters/pet";
import Results from './Results';
import useDropdown from "./useDropdown";
const SearchParams = () => {
const [location, setLocation] = useState("Seattle, WA");
const [breeds, setBreeds] = useState([]);
const [animal, AnimalDropdown] = useDropdown("Animal", "dog", ANIMALS);
const [breed, BreedDropdown, setBreed] = useDropdown("Breed", "", breeds);
const [pets, setPets] = useState([]);
};
async function requestPets() {
const { animals } = await pet.animals({
location,
breed,
type: animal
});
setPets(animals || []);
}
useEffect(() => {
setBreeds([]);
setBreed("");
pet.breeds(animal).then(({ breeds: apiBreeds }) => {
const breedStrings = apiBreeds.map(({ name }) => name);
setBreeds(breedStrings);
[animal, setBreed, setBreeds]
});
return (
<div className="search-params">
<form
onSubmit={e => {
e.preventDefault();
requestPets();
}
} >
<label htmlFor="location">
Location
<input
id="location"
value={location}
placeholder="Location"
onChange={e => setLocation(e.target.value)}
/>
</label>
<AnimalDropdown />
<BreedDropdown />
<button>Submit</button>
</form>
<Results pets={pets} />enter code here
</div >
);
export default SearchParams;
您正在尝试在 useEffect
函数中导出。我想你错过了关闭它。而且您在 useEFfect
之前关闭了 requestPets,这也不正确。我建议你使用 eslint。
我觉得应该是这样的吧?
import React, { useState, useEffect } from "react";`enter code here`
import pet, { ANIMALS } from "@frontendmasters/pet";
import Results from './Results';
import useDropdown from "./useDropdown";
const SearchParams = () => {
const [location, setLocation] = useState("Seattle, WA");
const [breeds, setBreeds] = useState([]);
const [animal, AnimalDropdown] = useDropdown("Animal", "dog", ANIMALS);
const [breed, BreedDropdown, setBreed] = useDropdown("Breed", "", breeds);
const [pets, setPets] = useState([]);
async function requestPets() {
const { animals } = await pet.animals({
location,
breed,
type: animal
});
setPets(animals || []);
}
useEffect(() => {
setBreeds([]);
setBreed("");
pet.breeds(animal).then(({ breeds: apiBreeds }) => {
const breedStrings = apiBreeds.map(({ name }) => name);
setBreeds(breedStrings);
[animal, setBreed, setBreeds]
});
});
return (
<div className="search-params">
<form
onSubmit={e => {
e.preventDefault();
requestPets();
}
} >
<label htmlFor="location">
Location
<input
id="location"
value={location}
placeholder="Location"
onChange={e => setLocation(e.target.value)}
/>
</label>
<AnimalDropdown />
<BreedDropdown />
<button>Submit</button>
</form>
<Results pets={pets} />enter code here
</div >
);
}
export default SearchParams;
我正在做一个项目,这样我可以更加熟悉编写代码。我是初学者,希望尽可能多地了解。我不相信我有任何拼写错误。有人会解释我到目前为止的代码有什么问题吗? I received this error message: "import and export may only appear at the top level."
import React, { useState, useEffect } from "react";`enter code here`
import pet, { ANIMALS } from "@frontendmasters/pet";
import Results from './Results';
import useDropdown from "./useDropdown";
const SearchParams = () => {
const [location, setLocation] = useState("Seattle, WA");
const [breeds, setBreeds] = useState([]);
const [animal, AnimalDropdown] = useDropdown("Animal", "dog", ANIMALS);
const [breed, BreedDropdown, setBreed] = useDropdown("Breed", "", breeds);
const [pets, setPets] = useState([]);
};
async function requestPets() {
const { animals } = await pet.animals({
location,
breed,
type: animal
});
setPets(animals || []);
}
useEffect(() => {
setBreeds([]);
setBreed("");
pet.breeds(animal).then(({ breeds: apiBreeds }) => {
const breedStrings = apiBreeds.map(({ name }) => name);
setBreeds(breedStrings);
[animal, setBreed, setBreeds]
});
return (
<div className="search-params">
<form
onSubmit={e => {
e.preventDefault();
requestPets();
}
} >
<label htmlFor="location">
Location
<input
id="location"
value={location}
placeholder="Location"
onChange={e => setLocation(e.target.value)}
/>
</label>
<AnimalDropdown />
<BreedDropdown />
<button>Submit</button>
</form>
<Results pets={pets} />enter code here
</div >
);
export default SearchParams;
您正在尝试在 useEffect
函数中导出。我想你错过了关闭它。而且您在 useEFfect
之前关闭了 requestPets,这也不正确。我建议你使用 eslint。
我觉得应该是这样的吧?
import React, { useState, useEffect } from "react";`enter code here`
import pet, { ANIMALS } from "@frontendmasters/pet";
import Results from './Results';
import useDropdown from "./useDropdown";
const SearchParams = () => {
const [location, setLocation] = useState("Seattle, WA");
const [breeds, setBreeds] = useState([]);
const [animal, AnimalDropdown] = useDropdown("Animal", "dog", ANIMALS);
const [breed, BreedDropdown, setBreed] = useDropdown("Breed", "", breeds);
const [pets, setPets] = useState([]);
async function requestPets() {
const { animals } = await pet.animals({
location,
breed,
type: animal
});
setPets(animals || []);
}
useEffect(() => {
setBreeds([]);
setBreed("");
pet.breeds(animal).then(({ breeds: apiBreeds }) => {
const breedStrings = apiBreeds.map(({ name }) => name);
setBreeds(breedStrings);
[animal, setBreed, setBreeds]
});
});
return (
<div className="search-params">
<form
onSubmit={e => {
e.preventDefault();
requestPets();
}
} >
<label htmlFor="location">
Location
<input
id="location"
value={location}
placeholder="Location"
onChange={e => setLocation(e.target.value)}
/>
</label>
<AnimalDropdown />
<BreedDropdown />
<button>Submit</button>
</form>
<Results pets={pets} />enter code here
</div >
);
}
export default SearchParams;