我有一個背景關系來定義我的明暗主題。然后我將背景關系發送到應用程式,在那里我定義了一個狀態,該狀態通過我的背景關系提供程式值傳遞到我的設定螢屏。
這是我的問題:如果我想通過設定在黑暗和光明之間切換,我需要把我的狀態放在哪里?或者我可以在 App 中定義一個通過導航傳遞的函式嗎?
我應該切換主題的按鈕是螢屏 Settings.js 中的簡單 onPress 按鈕,而且我的主題顏色顯然已經通過背景關系匯入了那里!
請幫忙!
應用程式.js
import ThemeContext, {themes} from './contexts/ThemeContext';
const App = () => {
const [selectedTheme, setSelectedTheme] = useState(themes.light)
return (
<ThemeContext.Provider value={selectedTheme}>
<Stack.Navigator>
<Stack.Screen name="Settings" component={Settings}/>
</Stack.Navigator>
</ThemeContext.Provider>
);
};
ThemeContext.js
import React from "react";
export const themes = {
dark: {
background:{backgroundColor:"black"},
text:{backgroundColor:"white"},
},
light:{
background:{backgroundColor:"white"},
text:{backgroundColor:"black"},
},
}
const ThemeContext = React.createContext(themes.dark)
export default ThemeContext
uj5u.com熱心網友回復:
將“setSelectedTheme”添加到您的 Context-Provider。
<ThemeContext.Provider value={{selectedTheme, setSelectedTheme}}>
您可以在需要的組件中匯入 ThemeContext 并以這種方式使用它:
const currentTheme = useContext(ThemeContext)
如果要更改主題,可以使用:
currentTheme.setSelectedTheme = "light"
無論您需要它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/420549.html
標籤:
