我正在尝试实现基本的抽屉,但是我对文档感到困惑。
有一个TouchableHighlight,有一个TouchableNativeFeedback。
TouchableNativeFeedback仅适用于Android。那么,如何最好地处理我的MenuItem组件,以便它可以同时处理Android和IOS?
这是到目前为止的内容,我不确定如何在此处处理不同平台特定的可触摸内容:
import React, { Component, PropTypes } from 'react';
import { TouchableHighlight, TouchableNativeFeedback, Platform, View, Text } from 'react-native';
export class MenuItem extends Component {
handleAndroid() {
}
handleIOS() {
}
renderMenuItem() {
return (
<View style={styles.container}>
<Text style={styles.text}>
{this.props.text}
</Text>
</View>
);
}
render() {
return (
);
}
}
在Android上,我只需要使用TouchableNativeFeedback吗?
就像您说的那样,TouchableNativeFeedback
它仅是Android,因此不适用于iOS。如果您想要一个既适用于这两种解决方案的解决方案,请相应地使用TouchableHighlight
并设置其样式。例如,其underlayColor
道具可让您设置“触摸有效时将显示的底衬颜色”。
编辑:
如果要TouchableNativeFeedback
用于Android和TouchableHighlight
iOS,则应执行以下操作:
import { Platform } from 'react-native'
...
render() {
if (Platform.OS === 'android') {
return (
<TouchableNativeFeedback>
...
</TouchableNativeFeedback>
)
} else {
return (
<TouchableHighlight>
...
</TouchableHighlight>
)
}
}
编辑2:
另外,您可以为每个平台创建一个自定义组件并使用文件扩展名。例如:
MyButton.ios.js
MyButton.android.js
将这两个放在同一文件夹中,然后MyButton
用作常规组件:
import MyButton from '../path/to/component/MyButton'
...
render() {
<MyButton/>
}
当您要在多个地方使用此组件时,这很整洁,因为您不会用if-else块填充代码。
在这里,您可以阅读有关平台特定代码的更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句