- 此问题在此处已有答案**:
Passing in parameter to Styled Components(3个答案)
1小时前关闭。
我正在练习如何使用Map功能。
我做了一个json文件,我想显示每个数据使用Map功能。
数据交得很好。但问题是展示图像的方式。
图像在一个文件中,显示图像的方式是使用background-position
显示图像的一部分。
为了做到这一点,我把taget 'background-position'的数字到json文件。
- 疑问 *
但我不知道怎么传递这个。我试着编代码,但没用。
我认为把值传递给样式化组件的方法是错误的,我怎么能显示不同的图像呢?
有问题的地方是id为list__img
的地方。
如果看到代码跨度,您将更容易理解代码。
- 代码**
import { useState } from "react";
import styled from "styled-components";
import dummy from "./database/DB.json";
export default function App() {
const [data, setData] = useState(dummy.products);
return (
<Wrap>
<div className="characterList">
<div className="word">
<h2 className="word__font">Like Pick!</h2>
</div>
<div className="list">
<ul className="list__ul">
{data.map((item) => {
return (
<div className="list__box">
<Card key={item.id} item={item} />
</div>
);
})}
</ul>
</div>
</div>
</Wrap>
);
}
// I think I need to deliver the value here
function Card({ item }) {
return (
<div className="list__wrap">
<div className="list__img" />
{item.nameKr}
</div>
);
}
const Wrap = styled.div`
border: 1px solid black;
position: relative;
top: calc(50vh - 100px);
width: 1200px;
display: inline-flex;
.characterList {
border: 1px solid red;
}
.word {
margin: 0 auto;
width: 1200px;
}
.word__font {
font-family: "SFCompactDisplay-Bold", sans-serif;
font-weight: bold;
font-size: 38px;
margin-bottom: 25px;
text-align: center;
}
.list {
border: 3px solid grey;
margin: 0 auto;
width: 1200px;
padding-bottom: 20px;
}
.list__ul {
display: inline-flex;
list-style: none;
}
.list__box {
margin: 0 9px;
text-align: center;
font-size: 17px;
}
.list__wrap {
color: #333;
font-size: 13px;
display: inline-block;
text-align: center;
}
.list__img {
background-image: url(https://www.kakaofriendsgolf.com/img/v3_img_sprites_friends@3x.png);
background-repeat: no-repeat;
width: 70px;
height: 70px;
background-size: 100%;
margin-bottom: 5px;
/* this part is the problem */
background-position: 0 {item.position}%;
}
`;
- 数据库**
{
"products": [
{
"id": "1",
"name": "choosik",
"nameKr": "춘식이",
"position": 17.647059
},
{
"id": "2",
"name": "ryan",
"nameKr": "라이언",
"position": 88.235295
},
{
"id": "3",
"name": "apeach",
"nameKr": "어피치",
"position": 5.882353
}
]
}
- 代码跨度**
https://codesandbox.io/s/characterselectmap-t2mqef?file=/src/App.js:0-1990
1条答案
按热度按时间dzjeubhm1#
可以将参数传递到已设置样式的构件中。
但是你这样做是行不通的。
将“list__img”分离到新的样式化组件中,然后您就可以访问这些 prop 了。
也可以设置内联样式