如何在 React Native 中关闭选择器?
How to close picker in React Native?
我正在使用 Native Base 选择器。
我想手动关闭它,但找不到 API 为此。
组件不包含任何方法或道具,如 visible
.
我怎样才能 close/hide 选择器?
a): 你可以简单地基于 this.state.isPickerVisible 渲染它,或者 b): 将它包装在一个有可见属性
的 Modal 中
用于关闭选择器,如果您选择将其包装在模态框内,则让模态框占据整个屏幕并使用无反馈的 Touchable 来处理选择器外的点击:<TouchableWithoutFeedback onPress={() => this.cancelPressed()}>
按下取消的位置切换 isPickerVisible
{this.state.isPickerVisible &&
<Picker
selectedValue={this.state.tempGender}
onValueChange={tempGender => this.setState({tempGender})}
>
<Picker.Item label="Female" value="female" />
<Picker.Item label="Male" value="male" />
<Picker.Item label="Other" value="other" />
</Picker>}
如果您选择将其包裹在模态框内,那么您可以获得一些动画选项
import {Modal, Picker ... etc...} from 'react-native'
<Modal
animationType="slide"
transparent={true}
visible={this.state.isPickerVisible}
>
<TouchableWithoutFeedback onPress={() => this.cancelPressed()}>
<View>
<Picker
selectedValue={this.state.tempGender}
onValueChange={tempGender => this.setState({tempGender})}
>
<Picker.Item label="Female" value="female" />
<Picker.Item label="Male" value="male" />
<Picker.Item label="Other" value="other" />
</Picker>
</View>
</TouchableWithoutFeedback>
</Modal>
在 my 的情况下,使用带有 backAction
参数的 renderHeader
函数就足够了
<Picker
renderHeader={backAction => (
<Button onPress={() => {
backAction();
someFunction();
}}
)}
/>
我正在使用 Native Base 选择器。
我想手动关闭它,但找不到 API 为此。
组件不包含任何方法或道具,如 visible
.
我怎样才能 close/hide 选择器?
a): 你可以简单地基于 this.state.isPickerVisible 渲染它,或者 b): 将它包装在一个有可见属性
的 Modal 中用于关闭选择器,如果您选择将其包装在模态框内,则让模态框占据整个屏幕并使用无反馈的 Touchable 来处理选择器外的点击:<TouchableWithoutFeedback onPress={() => this.cancelPressed()}>
按下取消的位置切换 isPickerVisible
{this.state.isPickerVisible &&
<Picker
selectedValue={this.state.tempGender}
onValueChange={tempGender => this.setState({tempGender})}
>
<Picker.Item label="Female" value="female" />
<Picker.Item label="Male" value="male" />
<Picker.Item label="Other" value="other" />
</Picker>}
如果您选择将其包裹在模态框内,那么您可以获得一些动画选项
import {Modal, Picker ... etc...} from 'react-native'
<Modal
animationType="slide"
transparent={true}
visible={this.state.isPickerVisible}
>
<TouchableWithoutFeedback onPress={() => this.cancelPressed()}>
<View>
<Picker
selectedValue={this.state.tempGender}
onValueChange={tempGender => this.setState({tempGender})}
>
<Picker.Item label="Female" value="female" />
<Picker.Item label="Male" value="male" />
<Picker.Item label="Other" value="other" />
</Picker>
</View>
</TouchableWithoutFeedback>
</Modal>
在 my 的情况下,使用带有 backAction
参数的 renderHeader
函数就足够了
<Picker
renderHeader={backAction => (
<Button onPress={() => {
backAction();
someFunction();
}}
)}
/>