Cha*_*had 0 javascript coffeescript browserify reactjs
我在React(coffee jsx)中有以下组件定义:
CompUtils = require './../utils/comp-utils'
...
render: ->
console.log CompUtils # prints {} (empty object)
<div>
Then
{CompUtils.getConstructComponent @props.construct, @props.onUpdate, @props.onRemove}
</div>
Run Code Online (Sandbox Code Playgroud)
但这有效:
render: ->
console.log require('./../utils/comp-utils')
<div>
Then
{require('./../utils/comp-utils').getConstructComponent @props.construct, @props.onUpdate, @props.onRemove}
</div>
Run Code Online (Sandbox Code Playgroud)
我对此绝对感到困惑.请注意,CompUtils已成功用于其他组件.
通常当你从require调用中获得一个空对象时,这是因为你有循环依赖.所以,你需要一个,这就要求乙,这需要Ç,这需要一个.在这种情况下,C将获得一个表示A的空对象,因为A尚未完成导出其函数/对象,并且当A完成导出时,A将仅在下一个滴答时完全可用于C.
这是一个例子:
// a.js
var b = require('./b');
module.exports = {
doStuff: function () {
}
}
// b.js
var c = require('./c');
// c.js
var a = require('./a');
// This will fail because a.js hasn't exported doStuff yet, since a required b, which
// required c, which required a.
a.doStuff();
Run Code Online (Sandbox Code Playgroud)
获得空对象的原因是因为Browserify module.exports在模块代码运行之前创建了一个表示该模块的空对象.这意味着另一个模块可以在它完成之前需要它,它只是没有完全烘烤.
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |