Alex Krolick
7 years ago
2 changed files with 39 additions and 0 deletions
@ -0,0 +1,36 @@ |
|||||
|
// Create a theme context, defaulting to light theme
|
||||
|
// highlight-next-line
|
||||
|
const ThemeContext = React.createContext('light'); |
||||
|
|
||||
|
// Signed-in user context
|
||||
|
const UserContext = React.createContext(); |
||||
|
|
||||
|
class App extends React.Component { |
||||
|
static propTypes = { |
||||
|
theme: PropTypes.string, |
||||
|
signedInUser: PropTypes.shape({ |
||||
|
id: number, |
||||
|
name: string, |
||||
|
avatar: string, |
||||
|
}), |
||||
|
}; |
||||
|
|
||||
|
render() { |
||||
|
return ( |
||||
|
<ThemeContext.Provider value={this.props.theme}> |
||||
|
<UserContext.Provider |
||||
|
value={this.props.signedInUser}> |
||||
|
<ThemeContext.Consumer> |
||||
|
{theme => ( |
||||
|
<UserContext.Consumer> |
||||
|
{user => ( |
||||
|
<ProfilePage user={user} theme={theme} /> |
||||
|
)} |
||||
|
</UserContext.Consumer> |
||||
|
)} |
||||
|
</ThemeContext.Consumer> |
||||
|
</UserContext.Provider> |
||||
|
</ThemeContext.Provider> |
||||
|
); |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue