2016-08-24 97 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 

容器定義是如何工作的,你不應該把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

好文章,這答案真的澄清的理念,爲我,謝謝。只有一個問題,我應該調用TodoListContainer來呈現TodoList,不應該TodoListContainer是具有渲染方法的組件?我很想念如何基本渲染它。 –

相關問題