diff --git a/lecture5/email-client-context/app/contexts/EmailsContext.jsx b/lecture5/email-client-context/app/contexts/EmailsContext.jsx new file mode 100644 index 0000000..5835d59 --- /dev/null +++ b/lecture5/email-client-context/app/contexts/EmailsContext.jsx @@ -0,0 +1,32 @@ +import React from 'react'; + +import { fetchEmails } from '../actions'; +const { Provider, Consumer } = React.createContext(); + +class EmailsProvider extends React.Component { + state = { + emails: [], + }; + + fetchEmails = async () => { + const {emails} = await fetchEmails(); + return this.setState(state => ({ + emails: [...state.emails, ...emails], + })); + }; + render(){ + return( + + {this.props.children} + + ); + } +} + +export { EmailsProvider, Consumer as EmailsConsumer }; diff --git a/lecture5/email-client-context/app/index.jsx b/lecture5/email-client-context/app/index.jsx index c6611a7..9a2f85b 100644 --- a/lecture5/email-client-context/app/index.jsx +++ b/lecture5/email-client-context/app/index.jsx @@ -3,55 +3,45 @@ import { render } from 'react-dom'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import { AuthProvider, UserProvider, EmailsProvider } from './contexts'; -import { HomePage, LoginPage } from './containers'; +import { HomePage, LoginPage, EmailPage } from './containers'; +import { EntryController } from './controllers'; import { login, fetchEmails } from './actions'; class App extends React.Component { state = { user: undefined, - emails: [], + //emails: [], }; updateUser = user => this.setState({ user }); - fetchEmails = async () => { - const { emails } = await fetchEmails(); - - return this.setState(state => ({ - emails: [...state.emails, ...emails], - })); - }; render() { - const { user, emails } = this.state; + const { user } = this.state; return ( - ( - - - - - - )} - /> - + + + ( + + + + + + + + + + )} + /> + );