在本机反应中打印提取输出
Print fetch outputs in react native
我试图打印我的提取输出,但出现错误
这是我的代码:
sliderRender(info) {
return (
<View style={styles.mainCarouselView}>
<Image style={styles.mainCarouselImage} source={{uri: info.sliderImg}} />
<View style={styles.mainCarouselOverlay}>
<Text style={styles.mainCarouselTitle}>{info.specialTitle}</Text>
</View>
</View>
);
}
getSlider() {
fetch(GLOBALS.API + '/specials.php?action=getSlider&key=' + GLOBALS.KEY)
.then((response) => response.json())
.then((responseJson) => {
var output = [];
let response = responseJson.response;
if(response instanceof Array && response.length > 0) {
for(var i = 0; i < response.length; i++) {
output.push(this.sliderRender(response[i]));
}
try {
AsyncStorage.setItem('slider', JSON.stringify(output));
} catch (error) {
console.log("error when we set local storage " + error.toString());
}
}
})
.catch((error) => {
console.log(error.toString());
});
try {
AsyncStorage.getItem('slider', (err, result) => {
let slider = JSON.parse(result);
this.setState({
sliderOp: slider
});
});
} catch (error) {
console.log("error by get item " + error.toString());
}
}
showSlider() {
var Carousel = require('react-native-carousel');
if (this.state.sliderOp !== null) {
return (
<Carousel
style={styles.mainCarousel}
hideIndicators={true}
animate={false}>
{this.state.sliderOp}
</Carousel>
);
}
}
我尝试将提取输出存储到数组中,如下所示:
output.push(this.sliderRender(response[i]));
并将其存储在状态中,最后打印状态...
但错误是:
"objects are not valid as a react child"
我能做什么?
很多tnx
您提供的代码不完整,所以很难理解错误实际发生在哪里,但是,根据错误,似乎 "info.specialTitle" 是一个对象而不是细绳。
--编辑--
对不起,之前我错了。
看起来您正在尝试将整个视图结构保存到 AsyncStorage。这不可能。您应该只将自己的文本数据保存到 AsyncStorage(如果需要,可以使用 json 格式)。 JSX 将 View 转换为更复杂的对象,可能具有圆形结构,您不能(也不应该)将其保存在 AsyncStorage 中。
尝试保存您收到的数据,然后像这样渲染滑块(未经测试):
sliderRender(info, key) {
return (
<View key={key} style={styles.mainCarouselView}>
<Image style={styles.mainCarouselImage} source={{uri: info.sliderImg}} />
<View style={styles.mainCarouselOverlay}>
<Text style={styles.mainCarouselTitle}>{info.specialTitle}</Text>
</View>
</View>
);
}
getSlider() {
fetch(GLOBALS.API + '/specials.php?action=getSlider&key=' + GLOBALS.KEY)
.then((response) => response.json())
.then((responseJson) => {
var output = [];
let response = responseJson.response;
if(response instanceof Array && response.length > 0) {
for(var i = 0; i < response.length; i++) {
output.push(response[i]);
}
try {
AsyncStorage.setItem('slider', JSON.stringify(output));
} catch (error) {
console.log("error when we set local storage " + error.toString());
}
}
})
.catch((error) => {
console.log(error.toString());
});
try {
AsyncStorage.getItem('slider', (err, result) => {
let slider = JSON.parse(result);
this.setState({
sliderOp: slider
});
});
} catch (error) {
console.log("error by get item " + error.toString());
}
}
showSlider() {
var Carousel = require('react-native-carousel');
if (this.state.sliderOp !== null) {
const sliderOps = this.state.sliderOp.map((op, i) => this.slideRender(op, i));
return (
<Carousel
style={styles.mainCarousel}
hideIndicators={true}
animate={false}>
{sliderOps}
</Carousel>
);
}
}
我试图打印我的提取输出,但出现错误 这是我的代码:
sliderRender(info) {
return (
<View style={styles.mainCarouselView}>
<Image style={styles.mainCarouselImage} source={{uri: info.sliderImg}} />
<View style={styles.mainCarouselOverlay}>
<Text style={styles.mainCarouselTitle}>{info.specialTitle}</Text>
</View>
</View>
);
}
getSlider() {
fetch(GLOBALS.API + '/specials.php?action=getSlider&key=' + GLOBALS.KEY)
.then((response) => response.json())
.then((responseJson) => {
var output = [];
let response = responseJson.response;
if(response instanceof Array && response.length > 0) {
for(var i = 0; i < response.length; i++) {
output.push(this.sliderRender(response[i]));
}
try {
AsyncStorage.setItem('slider', JSON.stringify(output));
} catch (error) {
console.log("error when we set local storage " + error.toString());
}
}
})
.catch((error) => {
console.log(error.toString());
});
try {
AsyncStorage.getItem('slider', (err, result) => {
let slider = JSON.parse(result);
this.setState({
sliderOp: slider
});
});
} catch (error) {
console.log("error by get item " + error.toString());
}
}
showSlider() {
var Carousel = require('react-native-carousel');
if (this.state.sliderOp !== null) {
return (
<Carousel
style={styles.mainCarousel}
hideIndicators={true}
animate={false}>
{this.state.sliderOp}
</Carousel>
);
}
}
我尝试将提取输出存储到数组中,如下所示:
output.push(this.sliderRender(response[i]));
并将其存储在状态中,最后打印状态... 但错误是:
"objects are not valid as a react child"
我能做什么?
很多tnx
您提供的代码不完整,所以很难理解错误实际发生在哪里,但是,根据错误,似乎 "info.specialTitle" 是一个对象而不是细绳。
--编辑--
对不起,之前我错了。 看起来您正在尝试将整个视图结构保存到 AsyncStorage。这不可能。您应该只将自己的文本数据保存到 AsyncStorage(如果需要,可以使用 json 格式)。 JSX 将 View 转换为更复杂的对象,可能具有圆形结构,您不能(也不应该)将其保存在 AsyncStorage 中。
尝试保存您收到的数据,然后像这样渲染滑块(未经测试):
sliderRender(info, key) {
return (
<View key={key} style={styles.mainCarouselView}>
<Image style={styles.mainCarouselImage} source={{uri: info.sliderImg}} />
<View style={styles.mainCarouselOverlay}>
<Text style={styles.mainCarouselTitle}>{info.specialTitle}</Text>
</View>
</View>
);
}
getSlider() {
fetch(GLOBALS.API + '/specials.php?action=getSlider&key=' + GLOBALS.KEY)
.then((response) => response.json())
.then((responseJson) => {
var output = [];
let response = responseJson.response;
if(response instanceof Array && response.length > 0) {
for(var i = 0; i < response.length; i++) {
output.push(response[i]);
}
try {
AsyncStorage.setItem('slider', JSON.stringify(output));
} catch (error) {
console.log("error when we set local storage " + error.toString());
}
}
})
.catch((error) => {
console.log(error.toString());
});
try {
AsyncStorage.getItem('slider', (err, result) => {
let slider = JSON.parse(result);
this.setState({
sliderOp: slider
});
});
} catch (error) {
console.log("error by get item " + error.toString());
}
}
showSlider() {
var Carousel = require('react-native-carousel');
if (this.state.sliderOp !== null) {
const sliderOps = this.state.sliderOp.map((op, i) => this.slideRender(op, i));
return (
<Carousel
style={styles.mainCarousel}
hideIndicators={true}
animate={false}>
{sliderOps}
</Carousel>
);
}
}