如何使用状态值更新上下文值
2021-03-29
67
我可以接收到正确的对象,但是无法用状态值更新的对象来更新上下文值
在:
const Context = createContext({
theme: dark,
toggleTheme: () => {},
});
我想使主题:dark,变为,主题:defaultTheme,使用 useState 修改的动态值
import React, { createContext, useState } from 'react';
import light from '../themes/light';
import dark from '../themes/dark';
const Context = createContext({
theme: dark,
toggleTheme: () => {},
});
export default Context;
export function ThemeContextProvider({ children }) {
const [defaultTheme, setDefaultTheme] = useState(dark);
function toggleTheme() {
setDefaultTheme(defaultTheme === dark ? light : dark);
}
return (
<Context.Provider value={{ theme, toggleTheme }}>
{children}
</Context.Provider>
)
}
1个回答
您正在向上下文提供程序传递一个
未定义
的值。(
theme
在
ThemeContextProvider
组件
内未定义)。您需要改为传递
defaultTheme
。
<Context.Provider value={{ theme: defaultTheme, toggleTheme }}>
{children}
</Context.Provider>
Kasi
2021-03-29