所以我需要访问上下文的值而不将其作为渲染函数调用。
不像这样:
const Child = () => {
return (
<ThemeConsumer>
{context => {return <Text>{context}</Text>}}
</ThemeConsumer>
);
};
到目前为止我有这个:
import React from 'react';
export const ThemeContext = React.createContext(0);
export const ThemeProvider = ThemeContext.Provider;
export const ThemeConsumer = ThemeContext.Consumer;
我正在使用这样的提供者:
render() {
const { index } = this.state;
return (
<ThemeProvider value={index}>
<TabView
key={Math.random()}
navigationState={this.state}
renderScene={this.renderScene}
renderTabBar={this.renderTabBar}
onIndexChange={this.handleIndexChange}
/>
</ThemeProvider>
);
}
那样行吗?
到目前为止,我遇到的主要问题是,我需要该值的地方既不是类也不是功能组件。
我需要做这样的事情:
import { ThemeConsumer } from '../../context/BottomNavigationTheme';
import HomeScreen from '../screens/HomeScreen';
import HomeScreen2 from '../screens/HomeScreen2';
functionToGetContextValue = () => valueFromContext;
const HomeStack = createStackNavigator({
Home: functionToGetContextValue ? HomeScreen : HomeScreen2, // HERE I NEED IT
});
HomeStack.navigationOptions = {
tabBarLabel: 'All Passengers',
tabBarIcon: ({ focused }) => <AllPassengersIcon focused={focused} />,
};
export default createBottomTabNavigator({
HomeStack,
LinksStack,
SettingsStack,
});
我应该怎么做才能访问该值?