рдореИрдВрдиреЗ рдПрдХ рдиреНрдпреВрдирддрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ Redux рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 10 рдЯреВрдбреВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЯреВрдбреВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╣рд░ рд╕реЗрдХреЗрдВрдб рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрдк рдХреЛ Redux Performance FAQ рдореЗрдВ рдЕрдиреБрд╢рдВрд╕рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджрд░рдЕрд╕рд▓ рдЬрдм рдореИрдВ рдРрдк рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдХрдВрд╕реЛрд▓ рд▓реЙрдЧ рдореЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╕реВрдЪреА рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рд╣рд░ рд╕реЗрдХреЗрдВрдб рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЯреВрдбреВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, React DevTools рд╣рд░ рд╕реЗрдХрдВрдб рдкреВрд░реА рд╕реВрдЪреА рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рд╣реИ: https://github.com/nareshbhatia/redux-performanceред рдХреНрдпрд╛ рдХреЛрдИ рдХреГрдкрдпрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ React DevTools рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореБрджреНрджрд╛ рд╣реИ рдпрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдХреЙрдХрдкрд┐рдЯ рддреНрд░реБрдЯрд┐ рд╣реИ!
рдЖрдк рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд░рд┐рдПрдХреНрдЯ рд░реЗрдбрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди connect()
рд░реИрдкрд░ рдЕрднреА рднреА рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рд╕рд▓рд╛рд╣ рдХреА рдЧрд▓рдд рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рд╣реЛрдЧреА (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ): рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ mapStateToProps
рдкрд░рд┐рдгрд╛рдо рдЙрди рдЪреАрдЬрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдерд▓реЗ рдмрд░рд╛рдмрд░ рд╣реИ рдЬреЛ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ ред
рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рдЪрд╛рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рдЕрдВрддрд░ рд╣реИ:
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 рдЕрдЧрд░ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рдореЗрдВ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреБрдЫ рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ рдЬрд┐рд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди @nareshbhatia , рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд╣реИ, рддреЛ Redux рд░реЗрдкреЛ рдкрд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред
рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @gaearon рдФрд░ @markerikson ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред рдПрдХрдорд╛рддреНрд░ рдЪрд╛рд▓ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ (рдЬреИрд╕рд╛ рдХрд┐ @gaearon рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) ownProps
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ todo
$ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рд╣реИ (рдкреВрд░реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп)ред рдпрд╣ рдЕрдХреНрд╖рдо рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд╛ рдореВрд▓ рдХрд╛рд░рдг рдерд╛ред рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рд░реЗрдкреЛ рддрдп рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╢реИрдХреНрд╖рд┐рдХ рд╣реИред
рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рдж!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @gaearon рдФрд░ @markerikson ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред рдПрдХрдорд╛рддреНрд░ рдЪрд╛рд▓ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ (рдЬреИрд╕рд╛ рдХрд┐ @gaearon рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)
ownProps
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░todo
$ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рд╣реИ (рдкреВрд░реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп)ред рдпрд╣ рдЕрдХреНрд╖рдо рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд╛ рдореВрд▓ рдХрд╛рд░рдг рдерд╛ред рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рд░реЗрдкреЛ рддрдп рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╢реИрдХреНрд╖рд┐рдХ рд╣реИредрдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рдж!