问题描述
尝试通过读取JSON数据执行自动完成建议。
JSON数据的格式为:
locations: [ { "Companyname": "pqr", "TopfiveproductsList": [ { "prodId": "16", "prodName": "abc" }, { "prodId": "17", "prodName": "xyz" } ], "companycode": "C1" }, { "Companyname": "zzz", "TopfiveproductsList": [ { "prodId": "12", "prodName": "yyy" }, { "prodId": "14", "prodName": "lmn" }, { "prodId": "32", "prodName": "qaq" } ], "companycode": "C2" } ]
显示
companyname
从locations
阵列和它的相应的记录TopfiveproductsList
阵列。
在下面的代码companyname
被显示,但其相应的TopfiveproductsList.prodName
不显示。访问
prodName
会导致错误JSON parse error: Unexpected identifier object
。<Autocomplete autoCapitalize="none" autoCorrect={false} data={locations} defaultValue={query} onChangeText={text => this.setState({ query: text })} renderItem={({ Companyname, TopfiveproductsList.prodName }) => ( <Text>{Companyname} {TopfiveproductsList.prodName}</Text )} />
index.android.js
import Sample from './sample.json';
export default class pre extends Component {
constructor(props) {
super(props);
this.state = {
locations: [],
query: '',
};
}
loadData() {
this.setState({ locations : Sample });
}
findLocation(query) {
this.loadData();
const { locations } = this.state;
const regex = new RegExp(`${query.trim()}`, 'i');
return locations.filter(location => location.Companyname.search(regex) >= 0);
}
render() {
const { query } = this.state;
const locations = this.findLocation(query);
return (
<View>
<Autocomplete
autoCapitalize="none"
autoCorrect={false}
data={locations}
defaultValue={query}
onChangeText={text => this.setState({ query: text })}
renderItem={({ Companyname }) => (
<Text> {Companyname} </Text> )}
/>
</View>
);
}
}
1楼
TopfiveproductsList是一个对象数组,您不能仅仅执行TopfiveproductsList.prodName来获取所需的内容。 看起来您需要使用字符串数组,因此您必须自己构建它:
<Autocomplete
autoCapitalize="none"
autoCorrect={false}
data={locations}
defaultValue={query}
onChangeText={text => this.setState({ query: text })}
renderItem={({ Companyname, TopfiveproductsList }) => {
const prodNames = TopfiveproductsList.map(item => item.prodNames);
return <Text>{Companyname} {prodNames}</Text }}
/>