我是本机反应的新手。我正在使用React Native纸张为所有屏幕提供主题。 我还使用了反应导航堆栈导航器和抽屉式导航器。首先,在导航中,纸张主题在导航的组件中不起作用。但是,如果我不使用反应导航,那么它将起作用。
因此,我尝试通过“ withTheme”将主题从一个组件传递到另一个组件。但是withTheme并没有给我我自定义的主题道具。
这是我的App.js
import { DefaultTheme,Provider as PaperProvider, Drawer, Avatar, withTheme } from 'react-native-paper';
import { createAppContainer,createSwitchNavigator } from 'react-navigation';
import { createDrawerNavigator } from 'react-navigation-drawer'
const theme = {
...DefaultTheme,
roundness: 8,
colors: {
...DefaultTheme.colors,
primary: '#ff0000',
accent: '#000000',
text: "#cc1111",
background: "#000000",
contained: '#000000'
},
dark: true
};
class App extends Component {
render(){
return(
<PaperProvider theme={theme}>
<switchNavigator />
</PaperProvider>
)
}
};
const switchNavigator = createSwitchNavigator({
Login: Login,
dranav: drawyerNavigator
},
{
initialRouteName: "Login",
})
export default createAppContainer(switchNavigator);
这是我的login.js
class Login extends Component{
state = {
emailtext: '',
passwordtext: ''
};
componentDidMount() {
SplashScreen.hide();
}
render(){
const {navigate} = this.props.navigation;
const { colors } = this.props.theme;
console.log({colors.accent})
}
}
export default withTheme(Login)
在我的Login.js中,我期望“ colors.accent”给出我的自定义主题的值,例如“#000000”。 但这给了我=“#03DAC4”,这是强调的默认颜色,而不是我的自定义颜色。
我正在使用本机版本0.61。请提出我在做什么错。还有一种更好的方法可以通过导航传递本机纸质主题。我想要所有屏幕都具有全球主题
谢谢
答案 0 :(得分:3)
您将开关导航器包装在组件App
中,但未在任何地方使用它。您需要包装并导出容器:
const Navigation = createAppContainer(switchNavigator);
export default function App() {
return(
<PaperProvider theme={theme}>
<Navigation />
</PaperProvider>
)
}