react-native - 嵌套地图函数 React Native 中的错误
问题描述
我无法使用我得到的以下代码来拥有两个嵌套地图[Error: Text strings must be rendered within a <Text> component.]
const MyScreen = ({ route, navigation }) => {
const { fieldsBlock } = route.params;
// Iterate
const fieldItems = fieldsBlock.map((fieldBlock) => (
<View>
<Text>{fieldBlock.title}</Text>
{fieldBlock.fields.map((field) => (
<Text>{field.fieldValue}</Text>
))}
</View>
)
);
return (
<View>
{fieldItems}
</View>
);
};
只有当我使用一个 map 函数时它才能工作,但使用嵌套的 map 函数会出错。
解决方案
我认为,问题在于如果fieldItems
结果为空数组,您将尝试在 View 标记之间不渲染任何内容。
如果数组为空,我建议更改代码以呈现 null,如下所示
const MyScreen = ({ route, navigation }) => {
const { fieldsBlock } = route.params;
// Iterate
const fieldItems = fieldsBlock.map((fieldBlock) => (
<View>
<Text>{fieldBlock.title}</Text> // <-- NOTE: because of this, view is not empty
{(fieldBlock && fieldBlock.fields && fieldBlock.fields.length)
? fieldBlock.fields.map((field) => (
<Text>{field.fieldValue}</Text>
))
: null
}
</View>
)
);
return (
{fieldItems && fieldItems.length)
? <View>{fieldItems}</View> : null // <-- NOTE: In this case avoid render a view without children
}
);
};
渲染这个很好:
<View />
但不是这个:
<View>
</View>
干杯!
推荐阅读
- node.js - Twilio SMS 排队但未发送,出现错误代码:30005
- javascript - 拖动地图时移动的传单缩放控件
- r - R中带有sampleSelection的内生切换回归模型(两步)
- javascript - 如何使用反应导航在屏幕之间切换?
- .htaccess - How do I rewrite this URL for .htaccess?
- elasticsearch - 如何过滤或排除 ElasticSearch 中的错误字段?
- azure - 提供对 Azure Blob 容器中文件夹的访问权限
- c++ - 在现代 C++ 之前,在没有 constexpr if 的情况下选择性地执行代码
- java - 在部署到 PaaS (Cloud Foundry) 之前扫描 jar 文件
- javascript - 在画布中更改动画中的形状