试图理解.apply(undefined,arguments))

时间:2017-05-22 20:34:43

标签: reactjs debugging call apply json-server

我一直在开发应用程序。 只是一个简单的应用程序,它有一个功能,我检查列表中项目的切换/切换状态。

在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)

但是当使用utils时,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来自最后一行的linkedValue文件:

  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在这里是如何相互关联的,在我看来,我在某个地方错过了一个论点。 最终目标是更新数据库中的状态完成/未完成,以及UI中的消息,说实际上项目已更新。

有趣的事实:如果我在App.js中硬编码一些类似的结构化对象并在内存中使用它来改变状态,则错误不会显示... o_O。 它只在尝试连接到' db'时出现,这仍然是模拟。不知道它是否相关,但我认为值得一提。 使用json-server模拟数据库对象。

所以我的问题是:如何调试此错误?有人可以帮我理解一下如何应用和调用与此错误有关。

任何正确方向的指针都会非常有用,非常感谢。

0 个答案:

没有答案