2016-08-24 94 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是具有渲染方法的组件?我很想念如何基本渲染它。 –

相关问题