client/src/components/NotesContainer.js
author ymh <ymh.work@gmail.com>
Mon, 22 May 2017 14:34:35 +0200
changeset 1 431977d7c9a6
child 2 b52921a63e77
permissions -rw-r--r--
add first react application skeleton

import React, { Component } from 'react';
import {connect} from 'react-redux';
import {bindActionCreators} from 'redux';

import PropTypes from 'prop-types';
import Immutable from 'immutable';

import * as notesActions from '../actions/notes-actions';
import NotesList from './NotesList';
import NoteInput from './NoteInput';

class NotesContainer extends Component {
    render() {
        const { notes } = this.props;
        return (
            <div>
                <NotesList notes={notes} />
                <NoteInput addNote={this.props.actions.addNote} />
            </div>
        );
    }
}

NotesContainer.propTypes = {
    notes: PropTypes.instanceOf(Immutable.List).isRequired,
    actions: PropTypes.object.isRequired
}

function mapStateToProps(state, props) {
  return {
    notes: state.get('notes')
  };
}

function mapDispatchToProps(dispatch) {
  return {
    actions: bindActionCreators(notesActions, dispatch)
  }
}


export default connect(mapStateToProps, mapDispatchToProps)(NotesContainer);