【问题标题】:ReferenceError: Cannot access 'search' before initializationReferenceError:初始化前无法访问“搜索”
【发布时间】:2021-04-25 08:23:04
【问题描述】:

我不断收到此引用错误,不知道出了什么问题。

ReferenceError:初始化前无法访问“搜索” 应用程序 C:/Users/GS66/Desktop/IN20/IFN666/week4/src/App.js:60 57 | 58 |导出默认函数 App() { 59 |

60 | const { 加载,标题,错误 } = useNewsArticles(search); 61 | const [搜索,setSearch] = useState(""); 62 | 63 |如果(加载){

这是 App.js 中的 App 部分

export default function App() {
const {loading, headlines, error} = useNewsArticles(search);
const [search, setSearch] = useState("");

if (loading) {
    return <p>Loading...</p>;
}
if (error) {
    return <p>Something went wrong: {error.message}</p>
}

return (
    <div className="App">
        <h1>News Headlines</h1>
        <SearchBar onSubmit={setSearch}/> {
            headlines.map((headline) => (
                //headline is now an object
                <Headline key={headline.url} title={headline.title}/>
            ))
        }
    </div>
);

}

这是来自 api.js 的 useNewsArticles 函数部分。

export function useNewsArticles(search) {
const [loading, setLoading] = useState(true);
const [headlines, setHeadlines] = useState([]);
const [error, setError] = useState(null);

useEffect(() => {
    (async() => {
        try {
            setHeadlines(await getHeadlines(search));
            setLoading(false);
        } catch (err) {
            setError(error);
            setLoading(false);
        }
    })();
}, [search]);

    return {
        loading,
        headlines,
        error,
    };

}

【问题讨论】:

  • 不确定该说什么,因为错误说明了一切:您在定义它之前使用search,这发生在更下方的一行...错误中的:60 表示第60行所以这样你就知道错误在说哪一行
  • 您在第 2 行使用搜索。您在第 3 行初始化搜索。

标签: javascript reactjs referenceerror


【解决方案1】:

你在第 3 行初始化搜索并在第 2 行使用。你应该做相反的事情,比如

const [search, setSearch] = useState("");
const {loading, headlines, error} = useNewsArticles(search);

【讨论】:

    【解决方案2】:

    当您在声明之前尝试使用变量时会出现此错误。

    首先用useState() 声明search,然后将其用作挂钩参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 2020-12-29
      • 2021-09-10
      • 2020-10-23
      相关资源
      最近更新 更多