【发布时间】:2019-01-21 16:26:43
【问题描述】:
我正在连续渲染几个数据项,用项目符号分隔,如果这些字符串不可用/不适用,有时会忽略它们。
const items = [
age !== null && `age ${age}`,
nationality && countryName(nationality),
/* ... */
];
return <Text>{items.filter(x=>x).join(' • ')}</Text>;
我现在想把年龄数字加粗,所以我用片段替换了数组中的字符串:
[age !== null && (<Fragment>age <Text style={styles.ageNumber}>{age}</Text></Fragment>)]
重新组装它,我不能再做join,因为它只适用于字符串。相反,我用字符串文字穿插了它,
const intersperse = (xs, sep) => xs.flatMap((x, i) => (i > 0 ? [sep, x] : [x]));
return <Text>{intersperse(items.filter(x => x), ' • ')}</Text>;
现在我将一个数组传递给 React,而不是在 JavaScript 中组合它,我收到警告说我数组中的每个孩子都需要一个键。除了通过使用索引作为键引发更多警告之外,我如何很好地处理这个问题?
【问题讨论】:
-
是什么让您认为使用索引作为键会引发更多警告?不推荐,但完全可行且合法。
-
^ 如果您尝试使用数组键作为 React 键,很多 linting 工具会报错。例如。 github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/…
标签: javascript arrays reactjs react-native