android - 使用 React-Native Picker 检测选择当前 selectedValue

标签 android react-native

我正在使用 React-Native 的 Picker component .假设我有以下内容:

export class someComponent extends Component {
    constructor(props) {
        super(props);
        this.state = {
            someVal: 1
        };
    }

    onNewValueSelected = (newVal) => {
        Alert.alert('You selected the value: ' + newVal)
        this.setState({someVal: newVal});
    }

    render() {


        return (
            <View style={styles.container}>
                <Picker
                    selectedValue={this.state.someVal}
                    prompt="Select Some Value"
                    onValueChange={this.onNewValueSelected}
                    mode='dropdown'>
                    <Picker.Item label='one' value={1} />
                    <Picker.Item label='two' value={2} />
                    <Picker.Item label='three' value={3} />
                </Picker>
            </View>
        );
    }

}

我如何检测当前选择的值在模态中被选中?假设这个组件第一次安装时用户选择了 1。我怎么知道他们选择了 1? onValueChange 在选择 selectedValue 时不会触发(至少在 Android 上)。我也没有看到任何为此组件创建解决方法的方法,因为我不知道一种检测何时打开和关闭 Picker 的模式或下拉列表的方法。

也许我只需要构建一个自定义按钮和模式来处理这个问题?任何帮助表示赞赏。谢谢!

最佳答案

你必须为每个设置唯一的键,像这样:

 on_type_Change(itemValue,itemIndex) {
    console.warn(itemValue,itemIndex);
}

<Picker
 selectedValue={this.state.value}
 onValueChange ={
 (itemValue, itemIndex) =>
 this.on_type_Change(itemValue, itemIndex)}
 mode='dropdown'>
 <Picker.Item label='one' value='1' key='uniquekey1'/>
 <Picker.Item label='one' value='2' key='uniquekey2'/>
 <Picker.Item label='one' value='3' key='uniquekey3'/>
</Picker>

on_type_Change(value) {
    console.warn(value);
}

<Picker
 selectedValue={this.state.value}
 onValueChange={this.on_type_Change.bind(this)}
 mode='dropdown'>
 <Picker.Item label='one' value='1' key='uniquekey1'/>
 <Picker.Item label='one' value='2' key='uniquekey2'/>
 <Picker.Item label='one' value='3' key='uniquekey3'/>
</Picker>

关于android - 使用 React-Native Picker 检测选择当前 selectedValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48465288/

相关文章:

android - 最新版本的 Expo 启动时出错

javascript - 纸质菜单已呈现但不可点击

javascript - 如何仅扩展平面列表中的一项

android - 重启后立即开始调试 Android 应用程序

java - 如何将 Firebase 数据转换为 Java 对象...?

java - 可绘制对象不适用于 API 19

android - 右侧的 ActionBar 抽屉导航图标

react-native - 从 NavigatorIOS.onRightButtonPress 内部访问 this.props.navigator

java - 如何连接2个onActivityResult?

react-native - react-native 中基于设备的 SplitView(仅适用于平板电脑和 iPad)