gpt4 book ai didi

javascript - react native 导航 useTheme()

转载 作者:行者123 更新时间:2023-12-05 02:03:25 25 4
gpt4 key购买 nike

我正在尝试直接从样式访问 useTheme()但到目前为止,我的解决方案似乎不起作用。我不会出错。有没有办法做我想做的事情?

 import { StyleSheet } from "react-native";

import { useTheme } from '@react-navigation/native'

export default function () {
const { colors } = useTheme();
const styles = GlobalStyles({ colors: colors })
return styles
}

const GlobalStyles = (props) => StyleSheet.create({

container: {
flex: 1,
backgroundColor: props.colors.backgroundColor,

},
})

访问组件中的样式

 import React from "react";
import GlobalStyles from "../globalStyles.js"

class Inventory extends React.Component {

render() {

return (
<View style={globalStyles.container}>
)

}

最佳答案

您有几个问题:您只能在 Hook 或函数组件中使用 Hook 。所以你可以将你的全局样式表转换成一个钩子(Hook):

import { StyleSheet } from "react-native";
import { useTheme } from '@react-navigation/native'

const getGlobalStyles = (props) => StyleSheet.create({
container: {
flex: 1,
backgroundColor: props.colors.backgroundColor,
},
});

function useGlobalStyles() {
const { colors } = useTheme();

// We only want to recompute the stylesheet on changes in color.
const styles = React.useMemo(() => getGlobalStyles({ colors }), [colors]);

return styles;
}

export default useGlobalStyles;

然后,您可以通过将 Inventory 类组件转换为函数组件并使用新的 useGlobalStyles Hook 来使用该 Hook 。

import React from "react";
import useGlobalStyles from "../globalStyles.js"

const Inventory = () => {
const globalStyles = useGlobalStyles();

return (
<View style={globalStyles.container}>
)
}

关于javascript - react native 导航 useTheme(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65258142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com