You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React天气应用Invalid Hook Call错误排查求助

解决React Invalid Hook Call错误(react-select-async-paginate相关)

根据你提供的代码和报错信息,错误出现在WithAsyncPaginate组件(react-select-async-paginate的内部封装),结合你已经尝试过重装React的情况,以下是针对性的解决方案:

1. 补全AsyncPaginate必填属性

你的AsyncPaginate组件缺少必填的loadOptions属性,这是组件加载选项数据的核心函数,缺失可能导致内部逻辑异常触发hook错误。

修改Search.js,添加loadOptions函数:

import { AsyncPaginate } from "react-select-async-paginate";
import { useState } from "react";

const Search = ({onSearchChange}) => {
    const [search, setSearch] = useState(null);

    // 新增:实现加载选项的逻辑,替换为你的实际API请求
    const loadOptions = async (searchValue) => {
        if (!searchValue) return { options: [] };
        // 示例:调用城市搜索API(替换为你的接口)
        const res = await fetch(`https://api.openweathermap.org/geo/1.0/direct?q=${searchValue}&limit=5&appid=你的API密钥`);
        const data = await res.json();
        return {
            options: data.map(item => ({
                label: `${item.name}, ${item.country}`,
                value: `${item.lat},${item.lon}`
            })),
            hasMore: false // 不需要分页就设为false
        };
    };
    
    const handleOnChange = (searchData) => {
        setSearch(searchData);
        onSearchChange(searchData);
    }
    return (
        <AsyncPaginate
            placeholder="Search for city"
            debounceTimeout={600}
            value={search}
            onChange={handleOnChange}
            loadOptions={loadOptions} // 新增这个必填属性
        />
    )
}
export default Search;

2. 排查依赖版本问题

  • 检查react-select-async-paginate与React版本的兼容性:查看该包的package.json中的peerDependencies,确认它支持你当前的React版本(比如React 18.x)。
  • 确保react和react-dom版本一致:运行以下命令查看版本:
    npm list react react-dom
    
    若版本不一致,执行以下命令统一版本:
    npm install react@latest react-dom@latest
    

3. 清除重复的React依赖

即使重装过依赖,仍可能存在多份React副本,执行以下命令合并依赖:

npm dedupe

或者彻底清理后重装:

rm -rf node_modules package-lock.json
npm install

内容的提问来源于stack exchange,提问作者Varun Agarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 19:13:16