引用对象实例的React.js模式
React.js pattern for referencing an object instance
我有一个经常需要应用/操作方法的对象,它看起来像这样:
var asperaWeb = new AW4.Connect({
sdkLocation: CONNECT_INSTALLER,
dragDropEnabled: false,
minVersion: '3.6.6'
});
我已经尝试将这个对象置于状态,以便当用户与UI交互时,我可以在我的React组件中使用它。
组件状态:
function getNavBarState() {
return {
asperaWeb: new AW4.Connect({
sdkLocation: CONNECT_INSTALLER,
dragDropEnabled: false,
minVersion: '3.6.6'
})
};
}
JSX in component:
<input
className="btn btn-primary"
onClick={this.state.asperaWeb.showSelectFileDialog({success:fileControls.uploadFiles})}
/>
但是当组件渲染时,input
onClick
似乎永远不会被设置。当我用React工具检查元素时,onClick
是null
。
我的问题是:
- 为什么是
null
?这是保存对象并对其应用方法的最佳模式吗?它不应该处于状态吗?选择呢?
除非您如何设置组件及其状态的任何问题,您的问题似乎是您实际上在onClick
属性内调用this.state.asperaWeb.showSelectFileDialog
方法。这将在input
被挂载后立即调用该方法,并尝试将onClick
设置为该方法的返回值。
相反,你应该bind
方法调用this
上下文和你想传递给它的值:
<input
className='btn btn-primary'
onClick={this.state.asperaWeb.showSelectFileDialog.bind(this, {success:fileControls.uploadFiles})}
/>
很难用我所拥有的信息来复制你的具体情况,但这里有一个工作的JFiddle,我认为你正在寻找一个例子。
(旁注:Facebook建议不要在render
中调用bind
,因为它每次创建render
的新函数,但您可以轻松地谷歌替代方法。)
相关文章:
- D3.js模式不适用于弧形或圆环图
- 查看完某个页面后,在重定向的页面上弹出js模式
- 清除我对这种 js 模式的想法
- 被动.js模式间接观察者报告相同的值
- Bootstrap JS模式加载,但不可编辑
- Require.js中的Backbone.js模式
- 流星排行榜示例 JS 模式说明
- 将公共钩子添加到 js 模式
- 从嵌套数组中获取唯一元素的 JS 模式是什么
- 可以'点击时不要启动ouibounce.js模式
- 具有闭包和性能的JS模式
- 在js模式窗口中为下一步添加操作
- Knockout JS模式用于同一页面中的多个视图模型,维护DOM结构
- JavaScript 中有没有办法在原型私有(使用模块 JS 模式)方法中提供对变量的访问
- JS模式提供字符串形式的函数名
- 这个JS模式的目的是什么?
- 在angular js模式弹出式或局部视图中加载外部js文件
- 引用对象实例的React.js模式
- oboe.js-模式来选择特定的节点,而不是所有匹配的节点
- npm风格的Emacs JS模式