通常,我可以在Flatlist中渲染对象数组,但是由于某些原因,我这次无法渲染。我收到一个错误消息:“不断违反:对象作为React子对象无效...”有人知道为什么会这样吗?
Debug Assertion Failed!
Program: D:\_extern\Test\Test.exe
File: minkernel\crts\ucrt\src\appcrt\lowio\read.cpp
Line: 259
Expression: static_cast<void const*>(source_buffer) == static_cast<void const*>(result_buffer)
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
答案 0 :(得分:2)
正如我在评论中所说,FlatList
不是问题。问题是<Text>{ allergins }</Text>
。
您可以:
字符串化allergins
(内联)
<Text>{ JSON.stringify(allergins) }</Text>
映射阵列
allergins.map(allergin => <Text>{ allergin.name }</Text>)
您无法在React中渲染对象(即{ name: "Soy", value: "Free From" }
)。有效的子代是字符串,数字,布尔值,其他元素/组件和(这些类型的)数组。
答案 1 :(得分:0)
因此,看来您正在尝试在Text中渲染对象。它只会接受字符串/数字作为子代。因此,您要做的是:
如果您知道对象的结构(似乎是这种情况),this.renderAllergins
应该看起来像这样:
renderAllergins = allergin => (
<View>
<Text>{allergin.name}</Text>
<Text>{allergin.value}</Text>
</View>
)
另一个选择是渲染对象中的每个键。您将执行以下操作:
renderAllergins = allergin => (
<View>
{Object.keys(allergin).forEach((key, value) => (
<Text>{value}</Text>
))}
</View>
)
答案 2 :(得分:0)
对我来说,toString
或JSON.stringify()
不起作用,因为我还需要传递包含图像的对象。
所以我做了很简单的事情:
我将{item}
放在了<View></View>
标签中。
<FlatList
data={allergins}
keyExtractor={(allergin, index) => index}
renderItem={({allergin}) => (
<View>this.renderAllergins(allergin)</View> . //You can try it as well
)}
/>