از کجا ما state رو دریافت کردیم؟

پرسیده شده
فعالیت 957 روز پیش
دیده شده 357 بار
0

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

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

علیرضا بابایی
علیرضا بابایی

19 شهریور 00

0
حذف شده

سلام

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

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

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

فایل پیوست

مجتبی سوری

توسط

مجتبی سوری

21 شهریور 00