私はreselectライブラリから次のコードを取得しました。'createSelector'は 'reselect'ライブラリの入力パラメータを受け入れていますか?
subtotalSelector
がexampleState
で呼び出されると、入力パラメータexampleState
を受け入れる関数createSelector
が呼び出されます。
createSelector
は、exampleState
とそれを消費する他の機能を受け入れる方法についての質問はありますか?私が理解していないパラメータの発生が暗黙的に注入されています。
import { createSelector } from 'reselect'
const shopItemsSelector = state => state.shop.items
const taxPercentSelector = state => state.shop.taxPercent
const subtotalSelector = createSelector(
shopItemsSelector,
items => items.reduce((acc, item) => acc + item.value, 0)
)
const taxSelector = createSelector(
subtotalSelector,
taxPercentSelector,
(subtotal, taxPercent) => subtotal * (taxPercent/100)
)
export const totalSelector = createSelector(
subtotalSelector,
taxSelector,
(subtotal, tax) => ({ total: subtotal + tax })
)
let exampleState = {
shop: {
taxPercent: 8,
items: [
{ name: 'apple', value: 1.20 },
{ name: 'orange', value: 0.95 },
]
}
}
console.log(subtotalSelector(exampleState)) // 2.15
subtotalSelector
は入力パラメータを置き換えることでもう少し説明できます。
subtotalSelector = createSelector(
state => state.shop.items,
items => items.reduce((acc, item) => acc + item.value, 0)
)
subtotalSelector({
shop: {
taxPercent: 8,
items: [
{ name: 'apple', value: 1.20 },
{ name: 'orange', value: 0.95 },
]
}
});