我可以在平面列表中使用 ItemSeparatorComponent 中的组件吗?
Can I use component in ItemSeparatorComponent in flat list?
我在想如何在Flat list
中使用ItemSeparatorComponent
如果我使用它就有效:
import Seperator from '../Seperator';
<FlatList
ItemSeparatorComponent={() => <Seperator />}
data={this.props.x}
renderItem={({ item }) => this.renderX(item)}
/>
我可以像下面这样使用 <Seperator />
吗?
import Seperator from '../Seperator';
<FlatList
ItemSeparatorComponent={ <Seperator />}
data={this.props.x}
renderItem={({ item }) => this.renderX(item)}
/>
没用!为什么?
如果您的 <Separator/>
是没有生命周期方法的无状态组件,您可以将它们更改为功能组件,如下所示:
import React from 'react'
import {View} from 'react-native'
const Separator= (props) =>
<Text>{...}</Text>
export default Separator
这样做时,您不需要明确的 return。如果您坚持使用 class 组件(带有状态、生命周期方法或渲染...),则需要使用箭头函数(隐式 return)。
() => <Separator />
有效而 <Separator />
无效的原因是因为 ItemSeparatorComponent
需要 函数 呈现元素,而不是元素本身.
这是因为您指定为分隔符的组件会在填充列表时动态呈现,而不是就地呈现(这是 <Component />
语法的作用)。
在您的工作示例中,您使用的是 () => <Separator />
。除非您使用 class 组件,否则这是多余的,因为您的代码在这种情况下所做的就是创建一个匿名函数,然后呈现您的组件。
如果您使用的是无状态功能组件(人们希望它只是一个分隔符),您可以将其写为 ItemSeparatorComponent={Separator}
我在想如何在Flat list
中使用ItemSeparatorComponent如果我使用它就有效:
import Seperator from '../Seperator';
<FlatList
ItemSeparatorComponent={() => <Seperator />}
data={this.props.x}
renderItem={({ item }) => this.renderX(item)}
/>
我可以像下面这样使用 <Seperator />
吗?
import Seperator from '../Seperator';
<FlatList
ItemSeparatorComponent={ <Seperator />}
data={this.props.x}
renderItem={({ item }) => this.renderX(item)}
/>
没用!为什么?
如果您的 <Separator/>
是没有生命周期方法的无状态组件,您可以将它们更改为功能组件,如下所示:
import React from 'react'
import {View} from 'react-native'
const Separator= (props) =>
<Text>{...}</Text>
export default Separator
这样做时,您不需要明确的 return。如果您坚持使用 class 组件(带有状态、生命周期方法或渲染...),则需要使用箭头函数(隐式 return)。
() => <Separator />
有效而 <Separator />
无效的原因是因为 ItemSeparatorComponent
需要 函数 呈现元素,而不是元素本身.
这是因为您指定为分隔符的组件会在填充列表时动态呈现,而不是就地呈现(这是 <Component />
语法的作用)。
在您的工作示例中,您使用的是 () => <Separator />
。除非您使用 class 组件,否则这是多余的,因为您的代码在这种情况下所做的就是创建一个匿名函数,然后呈现您的组件。
如果您使用的是无状态功能组件(人们希望它只是一个分隔符),您可以将其写为 ItemSeparatorComponent={Separator}