Skip to content

Commit

Permalink
Merge pull request #5923 from puppybits/patch-1
Browse files Browse the repository at this point in the history
Update 12-context.md
  • Loading branch information
zpao committed Jan 29, 2016
2 parents c569b32 + 6986fdd commit 9c3f595
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions docs/docs/12-context.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,38 @@ function Button(props, context) {
Button.contextTypes = {color: React.PropTypes.string};
```

## Updating context

The `getChildContext` function will be called when the state or props changes. In order to update data in the context, trigger a local state update with `this.setState`. This will trigger a new context and changes will be received by the children.

```javascript
var MediaQuery = React.createClass({
getInitialState: function(){
return {type:'desktop'};
},
childContextTypes: {
type: React.PropTypes.string
},
getChildContext: function() {
return {type: this.state.type};
},
componentDidMount: function(){
var checkMediaQuery = function(){
var type = window.matchMedia("min-width: 1025px").matches ? 'desktop' : 'mobile';
if (type !== this.state.type){
this.setState({type:type});
}
};

window.addEventListener('resize', checkMediaQuery);
checkMediaQuery();
},
render: function(){
return this.props.children;
}
});
```

## When not to use context

Just as global variables are best avoided when writing clear code, you should avoid using context in most cases. In particular, think twice before using it to "save typing" and using it instead of passing explicit props.
Expand Down

0 comments on commit 9c3f595

Please sign in to comment.