QAP项目使用Nuke组件开发。Nuke 是一套基于 Weex 容器 与 Rax 开源渲染引擎的 Hybrid 页面 UI组件体系。 它充分利用了Weex Native渲染红利,具备出色的使用体验。
所有Nuke组件通常包含以下通用事件。除了通用事件外,不同组件还会有不同的事件,具体可参考nuke 文档。
目前仅 TouchableHighlight、Button、Tabbar.Item 具备 onPress,参看如下实例:
'use strict';
import {createElement, Component, render} from 'rax';
import {View, Text, TouchableHighlight, Modal} from 'nuke';
class TestComponent extends Component {
onPress = ()=>{
Modal.alert('press');
}
render(){
return (
<TouchableHighlight onPress={this.onPress} style={{alignItems:'center', padding: '50rem'}}>
<View>点击我试试</View>
</TouchableHighlight>
);
}
}
render(<TestComponent />);
除了Button等特殊组件外,其他的组件都支持onLongPress事件,如:
'use strict';
import {createElement, Component, render} from 'rax';
import {View, Text, TouchableHighlight, Modal} from 'nuke';
class TestComponent extends Component {
longClick = ()=>{
Modal.alert('onlongpress')
}
render(){
return (
<View
style={{flex:1}}
onLongPress={this.longClick}>
<Text>长按屏幕任何试试</Text>
</View>
);
}
}
render(<TestComponent />);
ListView的renderRow方法根节点的组件拥有ondisappear和onappear事件。
...
renderItem(item, index) {
return (
<TouchableHighlight ondisappear={()=>{Modal.alert('ondisappear')}}
onappear={()=>{Modal.alert('onappear')}} style={flex:1} >
<Text style={app.itemTextList}>{item.title}</Text>
</TouchableHighlight>
);
}
...
render() {
var self = this;
return (
<ListView
header={listHeader}
fixHeader={false}
loadMoreOffset="500"
style={app.listContainer}
refresh={listRefresh}
onloading={self.onloading}
onrefresh={self.onrefresh}
renderSeparator={self.separate.bind(self)}
renderRow={self.renderItem.bind(self)}
data={self.state.data}
stop={self.state.stop}
loadMore={self.handleLoadMore.bind(self)}
/>
)
}