Пытаясь понять.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-сервера для макетирования объектов БД.

Итак, мой вопрос: как отладить эту ошибку? Может кто-нибудь помочь мне немного понять, как применить и позвонить относятся к этой ошибке.

Любые указатели в правильном направлении будут очень полезны и высоко ценится.

0 ответов

Другие вопросы по тегам