2016-08-24 9 views
1

私はPresentational and Container ComponentsSmart and Dumb Components in ReactReduxの関係、mapDispatchToProps

を読んで、コンセプト:

components for “dumb” React components ; 
containers for “smart” React components ; 

しかし、彼らはmapDispatchToPropsmapDispatchToProps

は言及しなかったが、それは私のことですコンテナからstateactionを取得し、コンポーネントにmapDispatchToPropsmapDispatchToPropsを使用しないでください。
mapDispatchToPropsを使用できますが、コンポーネントにはmapDispatchToPropsを使用しないでください。

は私が

答えて

3

、コンテナの概念を、このコンポーネントについて混乱して感じた表現的コンポーネントは、物事を見て、ストアに接続すべきではない方法を定義します。ここでは表現的/ダムの成分の例は次のとおりです。

import React from "react" 
import styles from "./styles.css" 

const TodoList = ({ todos, removeTodo }) => (
    <div className={ styles.todoList }> 
    { ... } 
    </div> 
) 

export default TodoList 

Aコンテナは、物事がどのように動作するかを定義して、あなたは、コンポーネントのこの種のDOMのマークアップやスタイルを置くべきではありません。これはストアに接続され、Presentational/Dumbコンポーネントにのみデータを提供します。ここではコンテナ/スマートコンポーネントの例である:だから

import { connect } from "react-redux" 
import { removeTodo } from "actions/todos" 
import TodoList from "components/TodoList" 

const mapStateToProps = (state) => ({ 
    todos: state.todos, 
}) 

const mapDispatchToProps = (dispatch) => ({ 
    removeTodo(todoId) { 
    dispatch(removeTodo(todoId)) 
    }, 
}) 

const TodoListContainer = connect(
    mapStateToProps, 
    mapDispatchToProps 
)(TodoList) 

export default TodoListContainer 

、あなたの質問に答えるために、あなたは表現的/ダムコンポーネントにmapStateToPropsmapDispatchToPropsを使用しないでください。

+0

上の素晴らしい記事です。ちょうど1つの質問、私はTodoListContainerをレンダリングメソッドのコンポーネントにしてはいけない、TodoListをレンダリングするためにTodoListContainerを呼び出すはずですか?私は基本的にそれをレンダリングする方法がありません。 –

関連する問題