我正在开发React原生应用程序。在这方面,我们正在显示一些描述文本,它可能是行数。
因此,如果数据超过3行,我必须显示更多和更少,如果它是展开的。
<FlatList
style={styles.faltList}
showsVerticalScrollIndicator
data={data}
extraData={this.state}
renderItem={({ item, index }) => (
<View style={styles.flatListCell}>
<Text style={styles.description}>{item.description}</Text>
</View>
</View>
)
}
ItemSeparatorComponent={() => (
<View style={{ height: 10}} />
)}
/>
我已经找到了react-native-view-more-text库,但我想通过自定义代码实现它。
注意:我将在平面列表中显示该文本。
有什么建议吗?
7条答案
按热度按时间bbuxkriu1#
看看我的解决方案,我没有使用文本行,我使用文本长度代替。
jq6vz3qz2#
查看此Widget
c8ib6hqw3#
check output of this code
第一个
y3bcpkx14#
我试着这样做,希望对你和其他人有帮助!
kx1ctssn5#
您可以简单地使用
numberOfLines
,它是一个<Text>
属性:用于在计算文本布局(包括换行)后使用省略号截断文本,以使总行数不超过此数字。
显然,还有一个足够的逻辑处理程序,用于在
state
中保存哪些文本被显示,哪些被截断。让我们看一下我刚刚创建的一个示例:
这里我使用
state
保存FlatList
中元素的索引,如果没有显示,则保存的值为-1。你可以在this snack中尝试它的行为,(我希望)它能重现你的情况。如果这是你要找的,请告诉我。(嗨,Anilkumar,我们已经见过面了:)
fquxozlt6#
第一个实现很接近,但问题是,当文本等于3行时,“阅读更多”按钮会显示,这是不应该的,因为没有更多的文本。我通过更新状态中的行数以及检查文本是否已显示来修复它。
lstz6jyr7#
有点晚了,但我已经开发了一个非常优化的轻量级解决方案,我称之为react-native-more-or-less
下面是如何使用它的示例:
数据:https://bundlephobia.com/package/react-native-more-or-less@0.3.0