Пытаясь понять.apply(undefined, аргументы))
Я разрабатывал приложение в реакции. Просто простое приложение, оно имеет функцию, где я проверяю состояние переключателя / переключателя для элементов в списке.
У utils.js есть
export const partial = (fn, ...args) => fn.bind(null, ...args)
const _pipe = (f, g) => (...args) => g(f(...args))
export const pipe = (...fns) => fns.reduce(_pipe)
но есть проблема в App.js, при использовании утилит:
const getToggledTodo = pipe(findById, toggleCompleted)
импорт помощников кажется хорошим:
import {pipe, partial} from './lib/utils'
import {addTodo, generateId, findById, toggleCompleted,
updateTodo, removeTodo, filterTodos} from './lib/todoHelpers'
Тем не менее, приложение жалуется
Uncaught TypeError: Cannot read property 'find' of undefined
делая консоль я получаю:
f2: function () {
return g(f.apply(undefined, arguments));
}
Я смотрел на:
at findById (todoHelpers.js:15)
at utils.js:10
at Object.executeOnChange (LinkedValueUtils.js:132)
и мне кажется, что undefined исходит из файла connectedValue в последней строке:
executeOnChange: function (inputProps, event) {
if (inputProps.valueLink) {
_assertValueLink(inputProps);
return inputProps.valueLink.requestChange(event.target.value);
} else if (inputProps.checkedLink) {
_assertCheckedLink(inputProps);
return inputProps.checkedLink.requestChange(event.target.checked);
} else if (inputProps.onChange) {
return inputProps.onChange.call(undefined, event);
}
}
};
Не уверен, как.apply и.call связаны друг с другом здесь, и мне кажется, что я где-то упускаю аргумент. Конечная цель - обновить состояние завершено / не завершено в БД, а также сообщение в пользовательском интерфейсе о том, что фактически элемент был обновлен.
Интересный факт: если я жестко закодирую какой-то подобный структурированный объект в App.js и использую его в памяти для изменения состояния, ошибка не отображается... o_O. Появляется только при попытке подключиться к "db", что, конечно же, является ложным. Не знаю, связано ли это, но я думаю, стоит упомянуть. Использование json-сервера для макетирования объектов БД.
Итак, мой вопрос: как отладить эту ошибку? Может кто-нибудь помочь мне немного понять, как применить и позвонить относятся к этой ошибке.
Любые указатели в правильном направлении будут очень полезны и высоко ценится.