我正在寻找提高我的 React 应用程序性能的方法。经过一番搜索,我研究了重新选择。但我不确定这个例子是如何工作的。
在示例中,它指出todos
每次更新组件时都会计算,这会损害性能。所以它介绍了使用记忆选择器来克服它。
getVisibleTodos
如果我放入组件render
功能会有区别吗?我想做什么是这样的:
containers/VisibleTodoList.js
import React from 'react'
import { connect } from 'react-redux'
import { toggleTodo } from '../actions'
import TodoList from '../components/TodoList'
const getVisibleTodos = (todos, filter) => {
switch (filter) {
case 'SHOW_ALL':
return todos
case 'SHOW_COMPLETED':
return todos.filter(t => t.completed)
case 'SHOW_ACTIVE':
return todos.filter(t => !t.completed)
}
}
/*const mapStateToProps = (state) => {
return {
todos: getVisibleTodos(state.todos, state.visibilityFilter)
}
}*/
const mapStateToProps = (state) => {
return {
todos: state.todos,
visibilityFilter: state.visibilityFilter
}
const mapDispatchToProps = (dispatch) => {
return {
onTodoClick: (id) => {
dispatch(toggleTodo(id))
}
}
}
const VisibleTodoList = ({todos, visibilityFilter, ...props}) => {
const visibleTodos = getVisibleTodos(todos, visibilityFilter);
return (
<TodoList todos={visibleTodos} {...props} />
)
}
const ConnectedVisibleTodoList = connect(
mapStateToProps,
mapDispatchToProps
)(VisibleTodoList)
export default ConnectedVisibleTodoList
在这种情况下,getVisibleTodos
不会调用除非todos
或visibilityFilter
更改。正确的?我的修改和选择器一样吗?我错过了什么吗?