我对这个节点js还是陌生的,经历了很多解释,尝试了许多解决方案,但仍然无法理解函数回调。
loc
<-结果-> Rb-v2已启动!!! 我们在仪表板中 {id:'23'} TypeError:dashboardfunc.productlist不是函数
问题是为什么很难返回结果,以及为什么调用函数,获取返回数据如此复杂。伴随着回调v / s承诺的处理(是的,我几乎阅读了所有帖子,但我的幼稚大脑无法处理它)
答案 0 :(得分:0)
尝试以下小技巧:
<FlatList data={this.state.mdata}
renderItem={this.renderList}
keyExtractor={(item, index) => `${index}`}
horizontal={false} numColumns={2}/>
导出唯一的函数,但是import {Text, View, ScrollView, TouchableOpacity,StyleSheet,Dimensions,FlatList} from 'react-native';
import {Card}from 'react-native-elements';
import API from './axios';
const styles = StyleSheet.create({
image: {
flex:1,width:'50%',height:'50%',
alignItems: 'center',
justifyContent: 'center',
},
})
export default class ImageList extends React.Component {
constructor(props) {
super(props);
this.state = {
mloading: false,
mdata: [],
current_page: 1,
merror: null,
mhasMore: true
}
}
componentDidMount() { this.getListOfPictures(); }
render() {
return (
<FlatList
data={this.state.mdata}
renderItem={this.renderList}
keyExtractor={(item, index) => `${index}`}
horizontal={false} numColumns={2}/>
)
}
/********************************************************************************
* getListOfPictures All pictures for dashboard
********************************************************************************/
getListOfPictures = () => {
if (this.state.mloading) { return; }
this.setState({ mloading: true });
API.get(`dashboard/all`)
.then(res => {
console.log("reco1m",res.data.recommendations[0]);
const nextPictures= res.data.recommendations.map(data => ({
title: data.style,
image_url: data.img,
description: data.description,
id: data.style
}));
console.log(nextPictures);
this.setState({
mhasMore: true,
mdata: [...this.state.mdata, ...nextPictures],
mloading: false,
current_page: this.state.current_page + 1})
}).catch(error => {this.setState({ merror:error, mloading: false });});
}
isCloseToBottom({ layoutMeasurement, contentOffset, contentSize }) {
return layoutMeasurement.height + contentOffset.y
>= contentSize.height - 0;
}
renderList = () => {
return ( this.state.mdata.map((u) => {
return (
<View style={{flex: 0.5, height: 150, margin: 5}}>
<TouchableOpacity
key={u.id} >
<Card
featuredTitle={u.title}
image={{ uri: u.image_url }}
imageStyle={styles.image}>
<View style={{ padding: 10 }}>
<Text style={{ fontSize: 15}}>Description:</Text>
<Text>{u.description}</Text>
</View>
</Card>
</TouchableOpacity>
</View>
);
}))
}
}
尝试将其用作对象的属性。您需要以下两种导出方式之一:admindashboard.js
或使用以下方法:
app.js
导入的函数调用中的参数丢失。尝试使用module.exports = { productlist };
而不是提到的dashboardfunc().then
。
dashboardfunc(data).then
函数中未使用 dashboardfunc.productlist().then
回调。使用它从诺言中返回数据:resolve
而不是productlist()
。
在错误处理方面保持一致。使用:
resolve(results);
代替:
return results;