تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ علیرضا بابایی
از کجا ما state رو دریافت کردیم؟
مجتبی سوری حل شده توسط مجتبی سوری

سلام جناب استاد سوری

داخل دو تابع 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)
}

سلام

تابع useSelector به عنوان پارامتر اول یه callback (همون تابعی که داریم بهش پاس میدیم) رو دریافت میکن

اگر دقت کرده باشی ما این تابع رو فراخوانی نمیکنیم و فقط رفنرس اون رو پاس میدیم به تابع useSelector 

 در واقع این تابع useSelector هست که تابعی رو که بهش پاس دادیم رو اجرا میکنه و state رو به عنوان پارامتر اول بهش پاس میده

بهترین پاسخ
مجتبی سوری ۲۱ شهریور ۱۴۰۰، ۱۴:۲۴