我一直在开发应用程序。 只是一个简单的应用程序,它有一个功能,我检查列表中项目的切换/切换状态。
在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模拟数据库对象。
所以我的问题是:如何调试此错误?有人可以帮我理解一下如何应用和调用与此错误有关。
任何正确方向的指针都会非常有用,非常感谢。