Skip to content
This repository was archived by the owner on Sep 27, 2019. It is now read-only.

Commit e15dada

Browse files
committed
new DrizzleContext API
1 parent b819c5a commit e15dada

File tree

2 files changed

+48
-6
lines changed

2 files changed

+48
-6
lines changed

src/DrizzleContext.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import React from "react";
2+
3+
const Context = React.createContext();
4+
5+
class Provider extends React.Component {
6+
state = { drizzleState: null, initialized: false };
7+
8+
componentDidMount() {
9+
const { drizzle } = this.props;
10+
// subscribe to changes in the store, keep state up-to-date
11+
this.unsubscribe = drizzle.store.subscribe(() => {
12+
const drizzleState = drizzle.store.getState();
13+
if (drizzleState.drizzleStatus.initialized) {
14+
this.setState({
15+
drizzleState,
16+
initialized: true
17+
});
18+
}
19+
});
20+
}
21+
22+
componentWillUnmount() {
23+
this.unsubscribe();
24+
}
25+
26+
render() {
27+
return (
28+
<Context.Provider
29+
value={{
30+
drizzle: this.props.drizzle,
31+
drizzleState: this.state.drizzleState,
32+
initialized: this.state.initialized
33+
}}
34+
>
35+
{this.props.children}
36+
</Context.Provider>
37+
);
38+
}
39+
}
40+
41+
export default {
42+
Consumer: Context.Consumer,
43+
Provider
44+
};

src/index.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
import drizzleConnect from './drizzleConnect.js'
2-
import DrizzleProvider from './DrizzleProvider.js'
1+
import drizzleConnect from "./drizzleConnect.js";
2+
import DrizzleProvider from "./DrizzleProvider.js";
3+
import DrizzleContext from "./DrizzleContext";
34

4-
export {
5-
drizzleConnect,
6-
DrizzleProvider
7-
}
5+
export { drizzleConnect, DrizzleProvider, DrizzleContext };

0 commit comments

Comments
 (0)