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

React中createContext与useContext不生效、index值未更新问题排查

核心原因
  • 消费useCountryIndexContext的第二个组件,没有被包裹在对应的CountryContextProvider内部,Context只能向下传递给Provider包裹的所有子组件,位于Provider外部的组件只能读取到createContext时传入的默认值{index:0},所以永远渲染0+2=2的结果。
  • 你当前CountryContextProvider的children为空,没有任何子组件可以消费你传入的index值。
  • 额外可能的问题:objects.map((index) =>)写法错误,数组map方法的第一个参数为当前遍历的元素,第二个参数才是索引,如果你实际想取遍历位置的序号,正确写法为objects.map((item, index) =>)。
解决步骤
  1. 将消费Context的第二个组件放到CountryContextProvider的children位置,修改对应代码:
import { CountryContextProvider } from "/EnteredCountriesContext";
// 导入你要渲染的第二个组件
import SecondComponent from './你的第二个组件路径';

return (
 {objects.map((item, index) => ( // 修正map参数,确保拿到的是正确的索引
  <StyledWrappingContainer>
    <StyledProgress>{index + 2}</StyledProgress>
    <CountryContextProvider index={index}>
      <SecondComponent /> {/* 把消费Context的组件放在这里 */}
    </CountryContextProvider>
  </StyledWrappingContainer>
 ))}
);
  1. 确认路径导入正确:你定义Context的文件路径要和导入的/EnteredCountriesContext一致,注意区分相对路径和绝对路径,比如同级目录下的文件需要写成./EnteredCountriesContext。
  2. 如果还有问题可以检查是否项目中存在多个React实例,这种情况多发生在使用npm link引入本地依赖的场景,正常项目开发基本不会遇到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:57:02