我有一個模型可以獲取一些資料和過濾器。當應用程式啟動時,我希望所有過濾器都等于true. 我已經設定了默認值,但仍然出現以下錯誤。
const model = (data, predictions, { placeFilter = true, startDateFilter = true, endDateFilter = true }) => {
const getData = () => data.filter(placeFilter).filter(startDateFilter).filter(endDateFilter)
}
TypeError: Cannot read properties of undefined (reading 'placeFilter')
at model (model.js:1)
at init (index.js:15)
uj5u.com熱心網友回復:
const model = (data, predictions, { placeFilter = true, startDateFilter = true, endDateFilter = true }) => {
const getData = () => data.filter(placeFilter).filter(startDateFilter).filter(endDateFilter)
}
你不能通過model傳遞兩個引數來呼叫上面的函式,model([], [])因為 JavaScript 會嘗試解構第三個引數,即undefined.
你可以這樣做:
const model = (data, predictions, { placeFilter = true, startDateFilter = true, endDateFilter = true } = {}) => {
console.log(placeFilter, startDateFilter, endDateFilter)
}
model([], [])
model([], [], { placeFilter: false })
順便說一句,假設data是一個陣列并且您正在嘗試使用Array.prototype.filter,filter應該使用回傳布林值的回呼函式呼叫,但您直接將布林值傳遞給所有過濾器。
uj5u.com熱心網友回復:
您的引數可以命名為訪問默認值
const model = (data, predictions, filter = { placeFilter: true, startDateFilter: true, endDateFilter: true }) => {
const getData = () => data.filter(filter.placeFilter).filter(filter.startDateFilter).filter(filter.endDateFilter)
}
uj5u.com熱心網友回復:
const model = (data, predictions, { placeFilter = true, startDateFilter = true, endDateFilter = true } = {}) => {
const getData = () => data.filter(placeFilter).filter(startDateFilter).filter(endDateFilter)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/347633.html
標籤:javascript 反应 功能 默认值
