Skip to content

Commit 070df37

Browse files
mjacksonMichael Jackson
authored andcommitted
Use createContext/Provider/Consumer naming
1 parent cb7faec commit 070df37

File tree

6 files changed

+64
-62
lines changed

6 files changed

+64
-62
lines changed

README.md

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ Then, use as you would anything else:
3232

3333
```js
3434
// using ES6 modules
35-
import { createBroadcast } from "react-broadcast"
35+
import { createContext } from "react-broadcast";
3636

3737
// using CommonJS modules
38-
var createBroadcast = require("react-broadcast").createBroadcast
38+
var createContext = require("react-broadcast").createContext;
3939
```
4040

4141
The UMD build is also available on [unpkg](https://unpkg.com):
@@ -51,12 +51,12 @@ You can find the library on `window.ReactBroadcast`.
5151
The following is a contrived example, but illustrates the basic functionality we're after:
5252

5353
```js
54-
import React from "react"
55-
import { createBroadcast } from "react-broadcast"
54+
import React from "react";
55+
import { createContext } from "react-broadcast";
5656

57-
const users = [{ name: "Michael Jackson" }, { name: "Ryan Florence" }]
57+
const users = [{ name: "Michael Jackson" }, { name: "Ryan Florence" }];
5858

59-
const { Broadcast, Subscriber } = createBroadcast(users[0])
59+
const { Provider, Consumer } = createContext(users[0]);
6060

6161
class UpdateBlocker extends React.Component {
6262
shouldComponentUpdate() {
@@ -66,35 +66,37 @@ class UpdateBlocker extends React.Component {
6666
// output will not change, but it makes it difficult for libraries
6767
// to communicate changes down the hierarchy that you don't really
6868
// know anything about.
69-
return false
69+
return false;
7070
}
7171

7272
render() {
73-
return this.props.children
73+
return this.props.children;
7474
}
7575
}
7676

7777
class App extends React.Component {
7878
state = {
79-
currentUser: Broadcast.initialValue
80-
}
79+
currentUser: Provider.defaultValue
80+
};
8181

8282
componentDidMount() {
8383
// Randomly change the current user every 2 seconds.
8484
setInterval(() => {
85-
const index = Math.floor(Math.random() * users.length)
86-
this.setState({ currentUser: users[index] })
87-
}, 2000)
85+
const index = Math.floor(Math.random() * users.length);
86+
this.setState({ currentUser: users[index] });
87+
}, 2000);
8888
}
8989

9090
render() {
9191
return (
92-
<Broadcast value={this.state.currentUser}>
92+
<Provider value={this.state.currentUser}>
9393
<UpdateBlocker>
94-
<Subscriber>{currentUser => <p>The current user is {currentUser.name}</p>}</Subscriber>
94+
<Consumer>
95+
{currentUser => <p>The current user is {currentUser.name}</p>}
96+
</Consumer>
9597
</UpdateBlocker>
96-
</Broadcast>
97-
)
98+
</Provider>
99+
);
98100
}
99101
}
100102
```

modules/Broadcast.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class Broadcast extends React.Component {
7474
componentWillMount() {
7575
deprecationWarning(
7676
"<Broadcast> is deprecated and will be removed in the next major release. " +
77-
"Please use createBroadcast instead. See https://goo.gl/QAF37J for more info."
77+
"Please use createContext instead. See https://goo.gl/QAF37J for more info."
7878
);
7979
}
8080

modules/Subscriber.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class Subscriber extends React.Component {
4545
componentWillMount() {
4646
deprecationWarning(
4747
"<Subscriber> is deprecated and will be removed in the next major release. " +
48-
"Please use createBroadcast instead. See https://goo.gl/QAF37J for more info."
48+
"Please use createContext instead. See https://goo.gl/QAF37J for more info."
4949
);
5050

5151
const broadcast = this.getBroadcast();

modules/__tests__/createBroadcast-test.js renamed to modules/__tests__/createContext-test.js

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,49 @@
11
import React from "react";
22
import ReactDOM from "react-dom";
33
import { Simulate } from "react-dom/test-utils";
4-
import createBroadcast from "../createBroadcast";
4+
import createContext from "../createContext";
55

6-
describe("createBroadcast", () => {
7-
it("creates a Broadcast component", () => {
8-
const { Broadcast } = createBroadcast();
9-
expect(typeof Broadcast).toBe("function");
6+
describe("createContext", () => {
7+
it("creates a Provider component", () => {
8+
const { Provider } = createContext();
9+
expect(typeof Provider).toBe("function");
1010
});
1111

12-
it("creates a Subscriber component", () => {
13-
const { Subscriber } = createBroadcast();
14-
expect(typeof Subscriber).toBe("function");
12+
it("creates a Consumer component", () => {
13+
const { Consumer } = createContext();
14+
expect(typeof Consumer).toBe("function");
1515
});
1616
});
1717

18-
describe("A <Broadcast>", () => {
18+
describe("A <Provider>", () => {
1919
it("knows its default value", () => {
2020
const defaultValue = "bubblegum";
21-
const { Broadcast } = createBroadcast(defaultValue);
22-
expect(defaultValue).toEqual(Broadcast.defaultValue);
21+
const { Provider } = createContext(defaultValue);
22+
expect(defaultValue).toEqual(Provider.defaultValue);
2323
});
2424
});
2525

26-
describe("A <Subscriber>", () => {
26+
describe("A <Consumer>", () => {
2727
let node;
2828
beforeEach(() => {
2929
node = document.createElement("div");
3030
});
3131

3232
it("gets the initial broadcast value on the initial render", done => {
3333
const defaultValue = "cupcakes";
34-
const { Broadcast, Subscriber } = createBroadcast(defaultValue);
34+
const { Provider, Consumer } = createContext(defaultValue);
3535

3636
let actualValue;
3737

3838
ReactDOM.render(
39-
<Broadcast>
40-
<Subscriber
39+
<Provider>
40+
<Consumer
4141
children={value => {
4242
actualValue = value;
4343
return null;
4444
}}
4545
/>
46-
</Broadcast>,
46+
</Provider>,
4747
node,
4848
() => {
4949
expect(actualValue).toBe(defaultValue);
@@ -53,22 +53,22 @@ describe("A <Subscriber>", () => {
5353
});
5454

5555
it("gets the updated broadcast value as it changes", done => {
56-
const { Broadcast, Subscriber } = createBroadcast("cupcakes");
56+
const { Provider, Consumer } = createContext("cupcakes");
5757

5858
class Parent extends React.Component {
5959
state = {
60-
value: Broadcast.defaultValue
60+
value: Provider.defaultValue
6161
};
6262

6363
render() {
6464
return (
65-
<Broadcast value={this.state.value}>
65+
<Provider value={this.state.value}>
6666
<button
6767
onClick={() => this.setState({ value: "bubblegum" })}
6868
ref={node => (this.button = node)}
6969
/>
7070
<Child />
71-
</Broadcast>
71+
</Provider>
7272
);
7373
}
7474
}
@@ -83,13 +83,13 @@ describe("A <Subscriber>", () => {
8383

8484
render() {
8585
return (
86-
<Subscriber
86+
<Consumer
8787
children={value => {
8888
if (childDidRender) {
8989
expect(value).toBe("bubblegum");
9090
done();
9191
} else {
92-
expect(value).toBe(Broadcast.defaultValue);
92+
expect(value).toBe(Provider.defaultValue);
9393
}
9494

9595
childDidRender = true;
@@ -106,24 +106,24 @@ describe("A <Subscriber>", () => {
106106
});
107107
});
108108

109-
describe("under a <Broadcast> with a value different from the default", () => {
109+
describe("under a <Provider> with a value different from the default", () => {
110110
it("gets the broadcast value on the initial render", () => {
111111
const defaultValue = "bubblegum";
112-
const { Broadcast, Subscriber } = createBroadcast(defaultValue);
112+
const { Provider, Consumer } = createContext(defaultValue);
113113

114114
const node = document.createElement("div");
115115

116116
let actualValue;
117117

118118
ReactDOM.render(
119-
<Broadcast value="cupcakes">
120-
<Subscriber
119+
<Provider value="cupcakes">
120+
<Consumer
121121
children={value => {
122122
actualValue = value;
123123
return null;
124124
}}
125125
/>
126-
</Broadcast>,
126+
</Provider>,
127127
node,
128128
() => {
129129
expect(actualValue).toEqual("cupcakes");

modules/createBroadcast.js renamed to modules/createContext.js

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,33 +20,33 @@ function getPropType(value) {
2020
return valueTypes[type] || PropTypes.any;
2121
}
2222

23-
function createBroadcast(defaultValue) {
23+
function createContext(defaultValue) {
2424
const valueType = getPropType(defaultValue);
2525
const channel = Symbol();
2626

2727
/**
28-
* A <Broadcast> is a container for a "value" that its <Subscriber>
28+
* A <Provider> is a container for a "value" that its <Consumer>
2929
* may subscribe to.
3030
*/
31-
class Broadcast extends React.Component {
31+
class Provider extends React.Component {
3232
/**
3333
* For convenience when setting up a component that tracks this
34-
* <Broadcast>'s value in state.
34+
* <Provider>'s value in state.
3535
*
3636
* const {
37-
* Broadcast,
38-
* Subscriber
39-
* } = createBroadcast("default value")
37+
* Provider,
38+
* Consumer
39+
* } = createContext("default value")
4040
*
4141
* class MyComponent {
4242
* state = {
43-
* broadcastValue: Broadcast.defaultValue
43+
* broadcastValue: Provider.defaultValue
4444
* }
4545
*
4646
* // ...
4747
*
4848
* render() {
49-
* return <Broadcast value={this.state.broadcastValue}/>
49+
* return <Provider value={this.state.broadcastValue}/>
5050
* }
5151
* }
5252
*/
@@ -107,10 +107,10 @@ function createBroadcast(defaultValue) {
107107
}
108108

109109
/**
110-
* A <Subscriber> sets state whenever its <Broadcast value> changes
110+
* A <Consumer> sets state whenever its <Provider value> changes
111111
* and calls its render prop with the result.
112112
*/
113-
class Subscriber extends React.Component {
113+
class Consumer extends React.Component {
114114
static contextTypes = {
115115
broadcasts: PropTypes.object
116116
};
@@ -138,7 +138,7 @@ function createBroadcast(defaultValue) {
138138
} else {
139139
warning(
140140
this.props.quiet,
141-
"<Subscriber> was rendered outside the context of its <Broadcast>"
141+
"<Consumer> was rendered outside the context of its <Provider>"
142142
);
143143
}
144144
}
@@ -154,9 +154,9 @@ function createBroadcast(defaultValue) {
154154
}
155155

156156
return {
157-
Broadcast,
158-
Subscriber
157+
Provider,
158+
Consumer
159159
};
160160
}
161161

162-
export default createBroadcast;
162+
export default createContext;

modules/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
export Broadcast from "./Broadcast";
22
export Subscriber from "./Subscriber";
33

4-
export createBroadcast from "./createBroadcast";
4+
export createContext from "./createContext";

0 commit comments

Comments
 (0)