javascript-如何在React Native中将选择器数据传递到API
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-如何在React Native中将选择器数据传递到API,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2551字,纯文字阅读大概需要4分钟。
内容图文
我构建了一个React Native组件,可让您选择几种类型的啤酒,它将通过选择器呈现到列表视图中.
我无法解决的问题是将数据发送到BreweryDb Api.我不确定从这个半完成的组件开始.
import React, { Component } from 'react';
import { View, Text, Picker, StyleSheet, ListView } from 'react-native'
const ds = new ListView.DataSource({rowHasChanged: (row1, row2) => row1 !== row2});
export default class BeerPicker extends Component {
constructor(props){
super(props);
this.state = {
beer: [],
beerDataSource: ds.cloneWithRows([]),
dataSource: ds.cloneWithRows(['string1', 'string2', 'string3']), //It seems to be not needed...
items: [
{label: 'Choose Beer', value: 'none'},
{label: 'IPA', value: 'ipa'},
{label: 'Pilsner', value: 'pilsner'},
{label: 'Stout', value: 'stout'}
],
selectedItem: 'none'
};
this.addBeer = this.addBeer.bind(this);
}
addBeer(itemValue, itemIndex){
let newBeerArray = [...this.state.beer, itemValue];
this.setState({
beer: newBeerArray,
selectedItem: itemValue,
beerDataSource: ds.cloneWithRows(newBeerArray),
});
}
renderRow(data) {
return (
<Text>{`\u2022 ${data}`}</Text>
);
}
render() {
let items = this.state.items.map((item, index) => {
return (<Picker.item label={item.label} value={item.value} key={index}/>);
});
return (
<View>
<Picker selectedValue={this.state.selectedItem} onValueChange = {this.addBeer}>
{items}
</Picker>
<ListView
dataSource={this.state.beerDataSource}
renderRow={this.renderRow}/>
</View>
)
}
}
const styles = StyleSheet.create({
text: {
fontSize: 30,
alignSelf: 'center',
color: 'black'
}
});
我想使用每个选定的项目并多次遍历API以获取有关每个选定项目的信息.
解决方法:
您可以通过几种方法来做到这一点.如果您要在用户选择新啤酒时进行api调用,则以下代码可能会有所帮助:
将apiData:{}添加到初始状态
添加this.fetchBeerFromApi(itemValue);在addBeer函数中
// notice I used es7 fat arrow functions to avoid having to bind in constructor
fetchBeerFromApi = async (beerId) => {
let response = await fetch(`${BREWERY_API_URL}/beer/${beerId}`);
response = await response.json();
if (response.error) {
console.error('Error with brewery api beer request', response.error);
return false;
}
const apiData = this.state.apiData;
apiData[beerId] = response;
// Or handle storing apiData somewhere else... I usually use immutable data
// structures to avoid deeply nested data not triggering re-rendering issues
// so this may or may not be problematic...
// Here is the immutablejs alternative to those last two lines:
// const apiData = this.state.apiData.set(beerId, response);
// Here we store it back to state where you can handle rendering the data if
// it is available
this.setState({apiData});
}
内容总结
以上是互联网集市为您收集整理的javascript-如何在React Native中将选择器数据传递到API全部内容,希望文章能够帮你解决javascript-如何在React Native中将选择器数据传递到API所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。