Sha256: cf4f29b9274bfe925b9c065fbb619a4e34ba8cdc153be37f4a2765a5cbfb724e
Contents?: true
Size: 1.89 KB
Versions: 17
Compression:
Stored size: 1.89 KB
Contents
import React, { PropTypes } from 'react'; import HelloWorldWidget from '../components/HelloWorldWidget'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import Immutable from 'immutable'; import * as helloWorldActionCreators from '../actions/helloWorldActionCreators'; function select(state) { // Which part of the Redux global state does our component want to receive as props? // Note the use of `$$` to prefix the property name because the value is of type Immutable.js return { $$helloWorldStore: state.$$helloWorldStore }; } // Simple example of a React "smart" component class HelloWorld extends React.Component { static propTypes = { dispatch: PropTypes.func.isRequired, // This corresponds to the value used in function select above. // We prefix all property and variable names pointing to Immutable.js objects with '$$'. // This allows us to immediately know we don't call $$helloWorldStore['someProperty'], but // instead use the Immutable.js `get` API for Immutable.Map $$helloWorldStore: PropTypes.instanceOf(Immutable.Map).isRequired, }; constructor(props, context) { super(props, context); } render() { const { dispatch, $$helloWorldStore } = this.props; const actions = bindActionCreators(helloWorldActionCreators, dispatch); const { updateName } = actions; const name = $$helloWorldStore.get('name'); // This uses the ES2015 spread operator to pass properties as it is more DRY // This is equivalent to: // <HelloWorldWidget $$helloWorldStore={$$helloWorldStore} actions={actions} /> return ( <HelloWorldWidget {...{ updateName, name }} /> ); } } // Don't forget to actually use connect! // Note that we don't export HelloWorld, but the redux "connected" version of it. // See https://github.com/reactjs/react-redux/blob/master/docs/api.md#examples export default connect(select)(HelloWorld);
Version data entries
17 entries across 17 versions & 1 rubygems