는 표현 적 요소가 일을보고 가게에 연결되지 방법을 정의 컨테이너 개념에 대해 혼란을 느꼈다. 여기 표상/벙어리 구성 요소의 예는 다음과 같습니다
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
그래서, 귀하의 질문에 대답하기 위해, 당신이 표상/벙어리 구성 요소
mapStateToProps
및
mapDispatchToProps
을 사용하지 않아야합니다 : 여기에 컨테이너/스마트 구성 요소의 예입니다.
에 좋은 기사입니다. 한가지 질문으로 TodoListContainer를 호출하여 TodoList를 렌더링해야하는데, TodoListContainer를 렌더링 메서드의 구성 요소로해서는 안됩니까? 기본적으로 렌더링하는 방법을 놓치고 있습니다. –