Reduxλ₯Ό μ¬μ©νμ¬ 10κ°μ ν μΌ λͺ©λ‘μ νμνλ μ΅μ μμ© νλ‘κ·Έλ¨μ λ§λ€μμ΅λλ€. ν μΌ μ€ νλκ° λ§€μ΄ μ λ°μ΄νΈλ©λλ€. μ±μ Redux μ±λ₯ FAQ μ κΆμ₯ μ¬νμ μ¬μ©νμ¬ μ΅μ νλμμ΅λλ€. μ€μ λ‘ μ±μ μ€ννλ©΄ μ½μ λ‘κ·Έμμ λͺ©λ‘μ΄ μ ν리μΌμ΄μ μμ μ ν λ²λ§ λ λλ§λκ³ λ§€μ΄ νλμ ν μΌλ§ λ λλ§λλ κ²μ λ³Ό μ μμ΅λλ€. κ·Έλ¬λ React DevToolsλ λ§€μ΄ μ 체 λͺ©λ‘μ κ°μ‘° νμν©λλ€.
μ΄ λ¬Έμ λ₯Ό 보μ¬μ£ΌκΈ° μν΄ μ΅μνμ μλ₯Ό λ§λ€μμ΅λλ€: https://github.com/nareshbhatia/redux-performance. λκ΅°κ° μμ λ₯Ό λ³΄κ³ μ΄κ²μ΄ React DevToolsμ μ€μ λ¬Έμ μΈμ§ μλλ©΄ λ¨μ§ μ‘°μ’ μ μ€λ₯μΈμ§ νμΈν΄ μ£Όμκ² μ΅λκΉ!
κ΅¬μ± μμ κ° λ€μ λ λλ§λλ κ²μ λ°©μ§νκ³ μμ§λ§ React Reduxμμ μμ±λ connect()
λνΌλ μ¬μ ν λ€μ λ λλ§λ©λλ€. μ‘°μΈμ μλͺ» ν΄μνμ μλ μλ€κ³ μκ°ν©λλ€(FAQλ₯Ό μ½μ§ μμκΈ° λλ¬Έμ νμ€νμ§ μμ). λμ ν΄μΌ ν μΌμ mapStateToProps
κ²°κ³Όκ° λ³κ²½λμ§ μλ νλͺ©μ λν΄ μκ² λμΌνμ§ νμΈνλ κ²μ
λλ€ .
λ€μμ μμ΄λμ΄λ₯Ό μ 곡νλ diffμ λλ€.
diff --git a/src/components/todo-view.js b/src/components/todo-view.js
index 9559a04..a3c0ac6 100644
--- a/src/components/todo-view.js
+++ b/src/components/todo-view.js
@@ -2,24 +2,12 @@ import React from 'react';
import { PropTypes } from 'prop-types';
export class TodoView extends React.Component {
- static propTypes = {
- todoId: PropTypes.number.isRequired,
- todoMap: PropTypes.object.isRequired
- };
-
- shouldComponentUpdate(nextProps) {
- const { todoId, todoMap } = this.props;
- const { todoMap: nextTodoMap } = nextProps;
- return todoMap[todoId] !== nextTodoMap[todoId];
- }
-
render() {
- const { todoId, todoMap } = this.props;
- console.log('-----> TodoView.render():', todoId);
+ const { todo } = this.props;
return (
<tr>
- <td >{todoMap[todoId]}</td>
+ <td >{todo}</td>
</tr>
);
}
diff --git a/src/containers/todo-view-container.js b/src/containers/todo-view-container.js
index b3930f0..ad3e37f 100644
--- a/src/containers/todo-view-container.js
+++ b/src/containers/todo-view-container.js
@@ -1,8 +1,8 @@
import { connect } from 'react-redux';
import { TodoView } from '../components/todo-view';
-const mapStateToProps = state => ({
- todoMap: state.todoMap
+const mapStateToProps = (state, ownProps) => ({
+ todo: state.todoMap[ownProps.todoId]
});
export const TodoViewContainer = connect(mapStateToProps)(TodoView);
cc @markerikson FAQμ λ΄μ©μ΄ μ€λͺ μ μ¬μ©ν μ μλ κ²½μ°
ν μ£Όμ μ κ°μ¬ν©λλ€. μμ ν΄μΌ ν ꡬ체μ μΈ λ΄μ©μ _μκ°_νμ§ μμ§λ§ @nareshbhatia , μ λ³΄κ° μΆ©λΆνμ§ μλ€κ³ μκ°λλ©΄ Redux 리ν¬μ§ν 리μ μμ λ‘κ² λ¬Έμ λ₯Ό μ μΆνμΈμ.
λμμ μ£Όμ @gaearon & @markerikson μκ² κ°μ¬λ립λλ€. λλ λ¬Έμκ° λ§€μ° λͺ
ννλ€κ³ μκ°ν©λλ€. λ΄κ° μκ°νμ§ λͺ»ν μ μΌν νΈλ¦μ (@gaearonμ΄ μ μν λλ‘) ownProps
λ₯Ό μ¬μ©νμ¬ μ»¨ν
μ΄λ λ΄λΆμμ λ°λ‘ todo
$λ₯Ό ν΄κ²°νλ κ²μ
λλ€(μ 체 맡μ λ·°μ μ λ¬νλ λμ ). μ΄κ²μ΄ λΉν¨μ¨μ μΈ λ λλ§μ κ·Όλ³Έ μμΈμ΄μμ΅λλ€. κ·νμ μ μμ λ°λΌ λ΄ μ μ₯μλ₯Ό μμ νμ΅λλ€. μμΌλ‘ λ€λ₯Έ λΆλ€κ»λ μ μ΅ν κ΅μ‘μ΄ λμμΌλ©΄ ν©λλ€.
λ€μ νλ² κ°μ¬ν©λλ€!
κ°μ₯ μ μ©ν λκΈ
λμμ μ£Όμ @gaearon & @markerikson μκ² κ°μ¬λ립λλ€. λλ λ¬Έμκ° λ§€μ° λͺ ννλ€κ³ μκ°ν©λλ€. λ΄κ° μκ°νμ§ λͺ»ν μ μΌν νΈλ¦μ (@gaearonμ΄ μ μν λλ‘)
ownProps
λ₯Ό μ¬μ©νμ¬ μ»¨ν μ΄λ λ΄λΆμμ λ°λ‘todo
$λ₯Ό ν΄κ²°νλ κ²μ λλ€(μ 체 맡μ λ·°μ μ λ¬νλ λμ ). μ΄κ²μ΄ λΉν¨μ¨μ μΈ λ λλ§μ κ·Όλ³Έ μμΈμ΄μμ΅λλ€. κ·νμ μ μμ λ°λΌ λ΄ μ μ₯μλ₯Ό μμ νμ΅λλ€. μμΌλ‘ λ€λ₯Έ λΆλ€κ»λ μ μ΅ν κ΅μ‘μ΄ λμμΌλ©΄ ν©λλ€.λ€μ νλ² κ°μ¬ν©λλ€!