为什么它向我显示这个错误?
我有一个应用程序是在我的react native Studio中使用npx react native init myProyect创建的。
我正在测试使用“styled components/native”添加样式的方法。
我想展示不同的公司,他们的名字,地址,公司类型的图标,公司的形象和评级明星。
我为星星添加了一个svg图像。对于公司映像,出于测试目的,我已经通过网址添加了它,但是我想从资产文件夹中添加映像,我不知道如何操作。
到目前为止,您可以看到公司图像、星星和CLOSE图像,这也是svg,我从一个文件中获取它。当我尝试添加图标以显示公司类别时,图标不会显示,尽管运行了应用程序,但控制台显示以下错误:
LOG Running "searchYourBusiness" with {"rootTag": 121}
ERROR Warning: Each child in a list should have a unique "key" prop.
Check the render method of `StoreInfo`. See https://reactjs.org/link/warning-keys for more information.
SvgXml @ http: //10.0.2.2: 8081 / index.bundle? Platform = android & dev = true & minify = false & app = com.searchYourBusiness & modulesOnly = false & runModule = true: 140774: 31
in StoreInfo (at StorePantalla.js: 31)
in RCTView (at View.js: 32)
in View
in StyledNativeComponent (created by Styled (View))
in Styled (View) (at StorePantalla.js: 30)
in RCTView (at View.js: 32)
in View (at SafeAreaView.js: 41)
in SafeAreaView
in StyledNativeComponent (created by Styled (Component))
in Styled (Component) (at StorePantalla.js: 23)
in StoreDisplay (at App.js: 35)
in ThemeProvider (at App.js: 34)
in App (at renderApplication.js: 48)
in RCTView (at View.js: 32)
in View (at AppContainer.js: 106)
in RCTView (at View.js: 32)
in View (at AppContainer.js: 133)
in AppContainer (at renderApplication.js: 41)
in searchYourBusiness (RootComponent) (at renderApplication.js: 57)
我在本网站的其他类似答案中寻找了解决方案,但我没有设法解决:
警告:列表中的每个孩子都应该有一个唯一的“钥匙”道具
警告:数组或迭代器中的每个子级都应具有唯一的“键”属性。检查“ListView”的渲染方法`
反应警告:列表中的每个孩子都应该有一个唯一的“键”道具。在render()函数中
如何修复警告:列表中的每个孩子都应该有一个唯一的“键”道具
没有其他方法来纠正错误并显示图标。
如何显示图标并消除错误?
根据结构化代码,我应该如何显示资产文件夹中的图标和图像?
我将显示此过程中涉及的文件
文件应用程序。js
import React from 'react'
import { StyleSheet, View, Text } from 'react-native'
import { ThemeProvider } from 'styled-components/native'
import { theme } from './src/theme'
import StorePantalla from './src/features/stores/pantallaStore/StorePantalla'
export default function App() {
return (
<ThemeProvider theme={theme}>
<StorePantalla />
</ThemeProvider>
)
}
const styles = StyleSheet.create({
})
文件存储信息。js
import React from 'react'
import { View, Text, StyleSheet, Image } from 'react-native'
import { Card } from 'react-native-paper'
import styled from 'styled-components/native'
import { SvgXml } from 'react-native-svg'
import star from '../../../../assets/star'
import closed from '../../../../assets/closed'
const StoreCard = styled(Card)`
background-color: ${(props) => props.theme.colors.bg.secondary}`
const StoreCardCover = styled(Card.Cover)`
padding: ${(props) => props.theme.space[4]}
background-color: ${(props) => props.theme.colors.bg.primary}
`
const Title = styled.Text`
font-family: ${(props) => props.theme.fonts.heading}
padding-left: ${(props) => props.theme.space[3]}
padding-bottom: ${(props) => props.theme.space[1]}
fontSize: ${(props) => props.theme.sizes[2]}
color: ${(props) => props.theme.colors.text.primary}
`
const Address = styled(Text)`
font-family: ${(props) => props.theme.fonts.body}
padding-left: ${(props) => props.theme.space[3]}
padding-bottom: ${(props) => props.theme.space[4]}
`
const Info = styled(View)`
padding: ${(props) => props.theme.space[2]}
`
const Rating = styled(View)`
flex-direction: row;
padding-left: ${(props) => props.theme.space[2]}
padding-bottom: ${(props) => props.theme.space[2]}
`
const Section = styled(View)`
flex-direction: row;
align-items: center;
`
const SectionEnd = styled(View)`
flex: 1;
flex-direction: row;
justify-content: flex-end;
`
const Icon = styled(Image)`
width= 35px;
height= 35px;
margin-left: ${(props) => props.theme.space[3]}
`
export const StoreInfo = ({ store = {} }) => {
const {
name = "Online Company",
//image= require('../../../../assets/logos.jpg'),
//photos = ["https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1125/posts/30546/preview_image/RN.jpg"],
icon = "https://img.icons8.com/material-two-tone/384/000000/espresso-cup--v2.png",
photos = ["https://cdn.pixabay.com/photo/2015/09/09/19/56/office-932926_1280.jpg"],
address = "Charcos Enbarrados, 6 Ninguna Parte 04593",
rating = 4,
isClosed = true,
} = store
const ratingArray = Array.from(new Array(Math.floor(rating)))
return (
<StoreCard
elevation={5}
>
<StoreCardCover
key={name}
resizeMethod='scale'
source={{ uri: photos[0] }}
/>
<Info>
<Title> {name} </Title>
<Section>
<Rating
style={styles.rating}
>
{ratingArray.map(() => (
<SvgXml xml={star} width={30} height={30} />
))}
</Rating>
<SectionEnd>
{isClosed && <SvgXml xml={closed} width={40} height={40} />}
<Icon
source={{ uri: icon }} />
</SectionEnd>
</Section>
<Address> {address} </Address>
</Info>
</StoreCard>
)
}
const styles = StyleSheet.create({
rating: {
paddingLeft: 20
}
})
File StorePantalla.js
import React from 'react'
import { View, SafeAreaView } from 'react-native'
import { Searchbar } from 'react-native-paper'
import { StoreInfo } from '../componentStore/StoreInfo'
import styled from 'styled-components/native'
const SafeArea = styled(SafeAreaView)`
flex:1;
`
const BarSearch = styled(View)`
padding: ${(props) => props.theme.space[3]}
`
const StoreList = styled(View)`
flex: 1;
background-color: #00BCD4;
padding: 1${(props) => props.theme.space[2]}
`
export default function StorePantalla() {
return (
<SafeArea>
<BarSearch>
<Searchbar
placeholder="Search"
/>
</BarSearch>
<StoreList>
<StoreInfo/>
</StoreList>
</SafeArea>
)
}
问题在于:
{ratingArray.map(() => (
<SvgXml xml={star} width={30} height={30} />
))}
您必须添加一个键属性,例如:
{ratingArray.map((_, i) => (
<SvgXml key={i} xml={star} width={30} height={30} />
))}
有关更多信息,请查看文档:https://reactjs.org/docs/lists-and-keys.html#basic-列表组件
我正在使用GoogleBooksAPI构建一个应用程序,我似乎正在向列表中的每个孩子传递一个唯一的密钥,但错误不会消失。我一定是做错了什么,但我不知道是什么。 注意,在const books中返回后,我有一个控制台。日志(book.id),它将在控制台中显示所有10个唯一的id键。但是当我试图使用key={book.id}将它传递给这个组件的子组件时,我得到了这个错误。
我使用firebase作为数据库,使用Ionic React作为移动应用程序。我已经将firebase数据转换为数组,但当我想映射值时。它告诉我它应该有一个唯一的键,但我已经在元素的返回函数中放置了一个唯一的键。有人能告诉我我做错了什么吗?谢谢 下面是我将对象转换为数组的代码 作为回报 我得到的是
问题内容: 我正在使用Google Books API构建应用,并且似乎正在向列表中的每个孩子传递唯一键,但是错误不会消失。我一定在做错事,但不确定。 请注意,在返回const books之后,我有一个console.log(book.id),它将在控制台中显示所有10个唯一的id键。但是,当我尝试使用key = {book.id}将其传递给该组件的子组件时,会出现此错误。 问题答案: 在需要去最
在这个简单的React应用程序中,我不明白为什么我会收到以下警告信息: 警告:列表中的每个孩子都应该有一个唯一的“键”道具。 对我来说,似乎我把密钥放在了正确的位置,形式为key={item.login.uuid} 我怎样才能摆脱警告信息?把钥匙放在哪里合适? 应用程序。js 列表js
我正在使用Nextjs开发一个电子商务网站,并正在查看myCart页面(订购物品列表) 代码为'http://localhost:5000/myCart'如下所示:myCart页面 我在导航栏中有一个购物车图标。当我点击它时,我被导航到我的购物车页面。已排序的列表将正确显示。但是在Dev工具中检查控制台时,我看到下面给出的警告。 同样,当我点击购物车图标时,页面会刷新并正确显示。此时,浏览器读取h
我对如何创建一个简单的todo应用程序的反应和探索方式还不熟悉。我当前收到错误“警告:列表中的每个孩子都应该有一个唯一的“键”道具。”一切似乎都很好,但我一定是做错了什么。 如果有人能帮上忙,那就br太好了/解释为什么会发生这个错误,那就太好了。