【发布时间】:2021-11-12 09:58:27
【问题描述】:
不明白为什么我对 createContext 和 useContext 的使用在我的 React 应用程序中不起作用。
我的上下文文件是这样的:
// @flow
import { createContext, useContext } from "react";
export type CountryIndexProviderType = {
index: number,
};
const CountryContext = createContext<CountryIndexProviderType>({
index: 0,
});
type CountryContextProviderProps = {
children: Node,
index: number,
};
const CountryContextProvider = ({
children,
index,
}: CountryContextProviderProps) => {
return (
<CountryContext.Provider value={{ index }}>
{children}
</CountryContext.Provider>
);
};
const useCountryIndexContext = () => useContext(CountryContext);
export { CountryContext, CountryContextProvider, useCountryIndexContext };
以及我使用Provider 设置index(数字)的值的组件:
import { CountryContextProvider } from "/EnteredCountriesContext";
return (
{objects.map((index) => (
<StyledWrappingContainer>
<StyledProgress>{index + 2}</StyledProgress>
<CountryContextProvider index={index}>
// NOT SURE WHAT SHOULD BE HERE?
</CountryContextProvider>
</StyledWrappingContainer>
))}
);
还有我的第二个组件,我使用useContext 将index 的值传递给样式化组件并呈现该值:
import { useCountryIndexContext } from "/EnteredCountriesContext";
const { index } = useCountryIndexContext();
<StyledWrappingContainer>
<StyledProgress>
<StyledProgress>{index + 2}</StyledProgress>
</StyledProgress>
</StyledWrappingContainer>
第二个组件始终呈现默认索引值 2(默认索引 = 0 + 2 添加到渲染中) - 谁能指出为什么我的 index 值没有更新?
【问题讨论】:
-
请提供有效的组件定义,而不仅仅是不完整的 sn-ps。您在哪里更新
index,它是在哪里定义的? -
已更新以包含索引如何传递到组件中。这基本上表明了这个组件被渲染了多少次。 (重复组件取决于用户定义他们想要添加多少次国家/地区)
标签: javascript reactjs react-context use-context