summaryrefslogtreecommitdiffstats
path: root/docs/api/connect.md
blob: 740deca1065c2eb5eaa6ad9a2e1dd344be2f0656 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Connect to the context

`GitBook.connect(Component, [mapStateToProps], [mapActionsToProps])` connects a react component to the GitBook context.

It does not modify the component class passed to it.
Instead, it returns a new, connected component class, for you to use.

### `mapStateToProps(state, [ownProps]): stateProps`

If specified, the component will subscribe to GitBook store updates. Any time it updates, `mapStateToProps` will be called. Its result must be a plain object, and it will be merged into the component’s props.

If you omit it, the component will not be subscribed to the GitBook store. If `ownProps` is specified as a second argument, its value will be the props passed to your component, and `mapStateToProps` will be additionally re-invoked whenever the component receives new props (e.g. if props received from a parent component have shallowly changed, and you use the `ownProps` argument, `mapStateToProps` is re-evaluated).

For example to render the title of the current page:

```js
const GitBook = require('gitbook-core');

let PageTitle = React.createClass({
    render() {
        const { page } = this.props;
        return <h1>{page.title}</h1>;
    }
});

function mapStateToProps(state) {
    return { page: state.page };
}

PageTitle = GitBook.connect(PageTitle, mapStateToProps);
```

### `mapActionsToProps(actions, [dispatch])`