react-native - React-Native-Material-Dropdown 未在前端显示数据
问题描述
我使用 react-native 材料下拉菜单从我的 API 中获取数据,如下所示:
<Dropdown
label='colors'
data={this.state.data.colors}
containerStyle={{width: 50}}
/>
{console.log("sbHASB",this.state.data.colors)}
但是,当我实现 thi 时,我确实在我的日志中获得了颜色,但它们似乎没有出现在列表中,它似乎是空白的,谁能告诉我为什么不是这样?任何帮助都会很棒,谢谢。
我实施后的日志如下:
sbHASB ["Blue", "White", "Blue", "White", "Blue", "White", "Blue", "White"]
如果您需要其他任何东西,请告诉我。
解决方案
假设您使用的是react-native-material-dropdown,他们 github 上的文档建议 data 道具应该是具有值键的对象列表。请参阅此处给出的示例。
import React, { Component } from 'react';
import { Dropdown } from 'react-native-material-dropdown';
class Example extends Component {
render() {
let data = [{
value: 'Banana',
}, {
value: 'Mango',
}, {
value: 'Pear',
}];
return (
<Dropdown
label='Favorite Fruit'
data={data}
/>
);
}
}
为了使您的列表正常工作,您应该将其转换为匹配此格式,例如
const data = this.state.data.colors.map((color) => ({value: color}))
鉴于您上面的示例,它可能看起来像
<Dropdown
label='colors'
data={this.state.data.colors.map((color) => ({value: color}))}
containerStyle={{width: 50}}
/>
但是,我建议在此步骤之前转换数据,例如当您收到来自 api 的响应时。
请参阅snack.io 上的此示例,如果您在设备上预览它,下拉菜单效果最佳,因为动画无法在网络预览中正确显示。
https://snack.expo.io/@dannyhw/dropdown
更新:这是更新的示例,其中包括如何动态使用它的示例
export default class App extends React.Component {
state = {
data: {colors: []}
}
getSomeData() {
// imagine this is your api call here and it returns a promise that resolves to be a list of colours
return Promise.resolve(["green", "White", "Blue", "White", "Blue", "White", "Blue", "White"])
}
componentDidMount(){
this.getSomeData().then((result)=> {
this.setState(state => state.data.colors = result)
})
}
render() {
return (
<View style={styles.container}>
<Dropdown
label='colors'
data={this.state.data.colors.map((color) => ({value: color}))}
containerStyle={{width: 150}}
/>
</View>
);
}
}
推荐阅读
- javascript - 如何根据SectionList中的键在ui上填充数组的值
- android - Android中的TimePickerDialog并添加到数据库
- discord - 如何通过不和谐机器人列出用户
- java - 具有 INNER JOIN 条件的 JPA 命名查询失败
- java - 如何在spring boot的application.yml中添加GCP(谷歌云存储)存储属性
- node.js - Docker 构建不使用来自 npm ci 的缓存
- c - Vim 指定语法文件(不是语法类型)?
- java - JNI:处理复杂的 C++ 类
- sql - PostgreSQL 子查询 - 计算滞后值的平均值
- ruby-on-rails - PSQL 数据库更新触发器更新过程有效。但是插入过程没有