我正在开发一个使用ScrollView的React Native应用程序。我想显示一些项目(带有标题和子项的卡片)。
当我不得不渲染每个项目时,问题就来了,而父级渲染得很好,而子级渲染得不好。
我不知道问题出在哪里,这是我的代码:
import React, {Component} from 'react';
import {View, Text} from 'react-native';
const mismo =[
'Mismo',
'Mismo',
'Mismo',
'Mismo',
'Mismo'
];
class Mismo extends Component {
renderMismo2(){
mismo.map((item) =>{
return(
<View>
<Text>{item}</Text>
</View>
)
})
}
render(){
return(
<View>
{this.renderMismo2()}
</View>
);
}
}
export default Mismo;
================================
import React, {Component} from 'react';
import {View, Text, ScrollView} from 'react-native';
import {Card} from 'react-native-elements';
import PriceCard from '../components/PriceCard';
import Mismo from '../components/Mismo';
class OrderPricingCard extends Component{
renderAllPrices(){
this.props.data.orders.map((item, i) => {
return(
<View>
<PriceCard
key={item.transporterName}
data={item}
/>
</View>
);
})
}
renderMismo(){
return(
<Mismo />
);
}
render () {
return (
<Card
containerStyle={styles.cardContainer}
title={`Pedido: ${this.props.data.id}`}
>
<ScrollView
horizontal
>
{this.renderMismo()}
{this.renderAllPrices()}
</ScrollView>
</Card>
);
}
}
const styles = {
cardContainer:{
borderRadius: 10,
shadowColor: "#000",
shadowOffset: {
width: 0,
height: 2,
},
shadowOpacity: 0.25,
shadowRadius: 3.84,
elevation: 5,
}
}
export default OrderPricingCard;
答案 0 :(得分:0)
这可能是一个容易犯的错误!我已经做过几次了。发生的事情是您忘记了在每个组件中找到的渲染方法(return
和renderMismo2()
)的renderAllPrices()
语句。尽管map
方法正确地具有return语句,但是您实际上并没有从函数本身返回任何东西。
如果要在React console.log()
方法中的return
上方render()
中调用任何一个函数,您将在控制台中看到undefined
。
这就是他们看起来要纠正的东西。
renderAllPrices(){
// added the 'return' keyword to begin the line below
return this.props.data.orders.map((item, i) => {
return(
<View>
<PriceCard
key={item.transporterName}
data={item}
/>
</View>
);
})
}
renderMismo2(){
// same here, added the 'return' keyword
return mismo.map((item) =>{
return(
<View>
<Text>{item}</Text>
</View>
)
})
}
我在React Native沙箱中测试了上述内容,并且可以正常工作。希望有帮助!