¿De qué sirve decorador @connect en react-redux?

Estoy aprendiendo React y siguiendo algunos tutoriales, me encontré con este código:

import React                  from 'react';
import TodosView              from 'components/TodosView';
import TodosForm              from 'components/TodosForm';
import { bindActionCreators } from 'redux';
import * as TodoActions       from 'actions/TodoActions';
import { connect }            from 'react-redux';

@connect(state => ({ todos: state.todos }))

export default class Home extends React.Component {
  render() {
    const { todos, dispatch } = this.props;

    return (
      <div id="todo-list">
        <TodosView todos={todos} 
          {...bindActionCreators(TodoActions, dispatch)} />

        <TodosForm
          {...bindActionCreators(TodoActions, dispatch)} />
      </div>
    );
  }
}

Esta es una aplicación de tareas y esta es la página principal, carga 2 más pequeñascomponents. Entendí casi todo pero no pude conseguir algunas cosas:

Que haceconnect ¿hacer? Sé que tienes que pasar 4 parámetros (aunque no pude obtener exactamente cuáles son esas 4 variables).¿Cómo es la implementación de@connect decorador, ¿cómo se verá el código después de la transpiración?

Gracias por adelantado :)

Respuestas a la pregunta(1)

Su respuesta a la pregunta