您可以通过ref以编程方式将事件处理程序添加到组件吗?这会抛出一个错误,说addEventListener不是函数:
this.refs.myListView.addEventListener('onContentSizeChange', () => {...});
onContentSizeChange 事件被触发了很多,所以我只想在需要时附加一个处理程序,这就是为什么我不想在渲染函数中的组件声明上这样做。我希望能够以编程方式附加和分离。
答案 0 :(得分:1)
ListView组件中没有方法addEventListener
。这是错误消息的原因。
如果您想订阅onContentSizeChange
事件,则必须在渲染功能上使用onContentSizeChange
道具。您无法动态附加或分离侦听器。
此处参考是ListView.js的代码
_onContentSizeChange: function(width: number, height: number) {
var contentLength = !this.props.horizontal ? height : width;
if (contentLength !== this.scrollProperties.contentLength) {
this.scrollProperties.contentLength = contentLength;
this._updateVisibleRows();
this._renderMoreRowsIfNeeded();
}
this.props.onContentSizeChange && this.props.onContentSizeChange(width, height);
}
在最后一行中,您可以看到,只有设置了this.props.onContentSizeChange
,才会调用回调,并且在React中道具是不可变的。