سلام جناب استاد سوری
داخل دو تابع selectFilteredTodos و selectFilterdTodoIds به عنوان ورودی state رو پاس دادیم ولی فقط یه جا selectFilterdTodoIds فراخوانی شد و اونم داخل
const todosIds = useSelector(selectFilterdTodoIds, shallowEqual)
هست
آیا زمانی که ما استیت رو پاس نمیدیم میره از استیت ریداکس استفاده میکنه؟
اگه قراره از استیت ریداکس استفاده کنه مگه قرار نیست خودمون به تابع پاس بدیم؟
export const selectTodos = state => state.todos.entities
export const selectTodosIds = state => Object.keys(state.todos.entities)
const selectFilteredTodos = state => {
const todos = Object.values(selectTodos(state))
const { status, colors } = state.filters
const showAll = status === StatusFilters.All
if (showAll && colors.length === 0) {
return todos
}
const showCompleted = status === StatusFilters.Completed
return todos.filter(todo => {
const statusFilter = showAll || todo.completed === showCompleted
const colorsFilter = colors.length === 0 || colors.includes(todo.color)
return statusFilter && colorsFilter
})
}
export const selectFilterdTodoIds = state => {
const filteredTodos = selectFilteredTodos(state)
return filteredTodos.map(todo => todo.id)
}