react-native - 从数组反应本机填充选择器内容
问题描述
我正在使用本地存储(AsyncStorage)..我想将本地存储中的所有内容显示到<Picker>
..我创建一个函数..该函数将所有数据作为数组返回..这是我的函数
getElementsInLocalStorage = async () => {
try{
var x = new Array();
let all_keys = await AsyncStorage.getAllKeys();
for(i = 0; i <= all_keys.length;i++ ){
x[i] = await AsyncStorage.getItem('one_person'+i);
}
return x;
}
catch(error){
alert(error);
}
}
我需要一个显示结果的解决方案<Picker>
谢谢你..
解决方案
您需要做的是将存储的数据设置为您的状态(就像我在 componentDidMount 中所做的那样),如果默认情况下您有一个选定的键,只需将其设置为 selectedKey 状态并将其传递给 selectedValue 道具,然后迭代您的数据。
当一个项目被选中时,只需将该项目的键设置为您的状态。
我为您创建了一个代码片段,可能会有所帮助:
import React, {Component} from 'react';
import {
Picker,
View,
Text,
} from 'react-native';
export default class Home extends Component {
componentDidMount() {
this.setState({
data: {
key1: 'data1',
key2: 'data2',
key3: 'data3'
},
selectedKey: 'key1',
})
}
render() {
return (
<View>
<Picker
selectedValue={this.state.selectedKey}
onValueChange={key => this.setState({selectedKey: key})}>
{
Object.keys(this.state.data).map(key => (
<Picker.Item key={key} label={this.state.data[key]} value={key}/>
))
}
</Picker>
<Text>Selected data: {this.state.selectedKey}</Text>
</View>
)
}
}
您可以使用以下方法获取您选择的值:
this.state.data[this.state.selectedKey]
推荐阅读
- git - Git 因致命错误而失败。无法将项目写入存储
- mysql - 将日期的月份部分转换为短名称mysql 8
- javascript - 返回值是未定义的。可以告诉我应该怎么做才能修复它?
- python - TypeError:“str”对象不可调用
- c# - 在 DataGridView 中显示空组合框内容?
- javascript - HandleCheckBox 反应选中和未选中,使列表进入状态
- xcode - Xcode:NATIVE_ARCHS 与 NATIVE_ARCH_ACTUAL
- java - @controlleradvice 给出错误:范围“会话”对于当前线程不是活动的
- c++ - boost locale 是否支持 UTF-8 作为基于 char* 的字符串和流的内部编码
- android - 我应该为 Android GSI 选择什么架构?