1.0.3 • Published 8 years ago

context-provider v1.0.3

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

context-provider

Context provider for React. Inspired from fluxible-addons-react/provideContext.

Install

$ npm install context-provider

Usage

with Babel

babel-preset-es2015 and babel-preset-react, babel-plugin-transform-decorators-legacy, babel-plugin-transform-class-properties is required.

import provideContext from 'context-provider/lib/provideContext';
import React, { Component, PropTypes } from 'react';
import ReactDOM from 'react-dom';

class Header extends Component {
  static contextTypes = {
    userName: PropTypes.string.isRequired
  };

  render() {
    return (
      <header>
        <h1>Hello, {this.context.userName}.</h1>
      </header>
    );
  }
}

@provideContext({
  userName: PropTypes.string.isRequired
})
class App extends Component {
  static contextTypes = {
    userName: PropTypes.string.isRequired
  };

  render() {
    return (
      <div>
        <Header />
        <p>Hi! {this.context.userName}!</p>
      </div>
    );
  }
}

ReactDOM.render(
  <App context={{ userName: 'John Doe' }} />,
  document.getElementById('app')
);

Legacy style

var provideContext = require('context-provider/lib/provideContext');
var React = require('react');
var ReactDOM = require('react-dom');

var Header = React.createClass({
  contextTypes: {
    userName: React.PropTypes.string.isRequired
  },
  render: function() {
    return React.createElement(
      'header',
      null,
      React.createElement(
        'h1',
        null,
        'Hello, ',
        this.context.userName,
        '.'
      )
    );
  }
});

var App = React.createClass({
  contextTypes: {
    userName: React.PropTypes.string.isRequired
  },
  render: function() {
    return React.createElement(
      'div',
      null,
      React.createElement(Header, null),
      React.createElement(
        'p',
        null,
        'Hi! ',
        this.context.userName,
        '!'
      )
    );
  }
});

App = provideContext({
  userName: React.PropTypes.string.isRequired
})(App);

ReactDOM.render(
  React.createElement(App, {
    context: { userName: 'John Doe' }
  }),
  document.getElementById('app')
);

License

MIT

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago