实际上没有修复。这是 RN“渲染画布错误”。但我找到了黑客解决方案。
<ListView
style={Style.listView}
dataSource={data}
renderRow={(data) => this._renderRow(data)}
/>`
Style.listView: { backgroundColor: '#fff', }, // 或您需要的其他背景颜色
然后:
_renderRow(goods) {
return (
<View key={'goods_' + goods.id} style={Style.listView_item}>
<TouchableOpacity or View or ...
style={[Style.flex, Style.flexRow, Style.separatorRow, Style.u_paddingVerticalS, Style.u_middle]}
onPress={() => this._xyz(goods)}>
<View>
<AppFont>{goods.name}</AppFont>
</View>
</TouchableOpacity or View or ...>
</View>
);
}
唯一重要的 TouchableOpacity 样式是 Style.separatorRow 来呈现您的分隔符。这个样式应该在 listView_item 里面,你可以在其中使用其他样式。
listView: {
backgroundColor: '#fff',
},
listView_item: {
paddingHorizontal: em(1.5),
},
flex: {
flex: 1,
},
flexRow: {
flexDirection: 'row',
},
separatorRow: {
marginBottom: 1,
borderBottomWidth: 1,
borderBottomColor: Colors.canvasColor,
},
您可以使用 StyleSheet.hairlineWidth 而不是 1 但这不是必须的。