React Native列表key属性警告仍存在,求原因解析
解决React Native列表"unique key"警告问题
你的问题出在key的位置不对:你把key加在了Fragment内部的View上,但React要求map返回的最顶层元素必须有唯一key——你当前用<>作为每个列表项的最外层容器(也就是React Fragment),这个Fragment才是列表的直接子元素,所以key得加在它身上,而不是嵌套的View上。
给你两个解决办法:
方法1:去掉多余的Fragment
因为你当前Fragment里只有一个View,完全没必要用Fragment,直接把View作为map返回的顶层元素,key加在View上就可以了:
<View> {arrayType.map((item, index)=> { return( <View key={item + index} style={customStyle.main}> <Text>{item}</Text> </View> ) })} </View>
方法2:给Fragment显式加key(如果需要保留Fragment)
如果之后要在Fragment里添加多个同级元素,必须用完整的<React.Fragment>标签并给它加key,不能用简写的<>:
import React from 'react'; // ... <View> {arrayType.map((item, index)=> { return( <React.Fragment key={item + index}> <View style={customStyle.main}> <Text>{item}</Text> </View> </React.Fragment> ) })} </View>
额外提醒:尽量别用index拼接key(如果数组元素会有排序、增删操作的话),优先用每个item自身的唯一标识,比如item.id,这样能避免列表重渲染时出现异常。
内容的提问来源于stack exchange,提问作者kingsJayson
相关产品推荐
相关产品推荐

