英文:
Why these arrow buttons are not positioning to left and right
问题
I want these two left and right arrow buttons to be positioned left and right depending upon the props passed.
import styled from "styled-components";
import ArrowBackIosSharpIcon from '@mui/icons-material/ArrowBackIosSharp';
import ArrowForwardIosSharpIcon from '@mui/icons-material/ArrowForwardIosSharp';
const Container = styled.div`
width: 100%;
height: 100vh;
display: flex;
position: relative;
overflow: hidden;
background-color: #fff6a9;
`;
const Arrow = styled.div`
width: 50px;
height: 50px;
background-color: #fff7f7;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top: 0;
bottom: 0;
left: ${(props) => props.direction === "left" && "10px"};
right: ${(props) => props.direction === "right" && "10px"};
margin: auto;
cursor: pointer;
opacity: 0.5;
z-index: 2;
`;
const Slider = () => {
return (
<Container>
<Arrow direction="left">
<ArrowBackIosSharpIcon />
</Arrow>
<Arrow direction="right">
<ArrowForwardIosSharpIcon />
</Arrow>
</Container>
);
}
export default Slider;
I am passing left and right as props to styled components but this is not working.
英文:
I want these two left and right arrow buttons to be positioned left and right depending upon the props passed.
import styled from "styled-components";
import ArrowBackIosSharpIcon from '@mui/icons-material/ArrowBackIosSharp';
import ArrowForwardIosSharpIcon from '@mui/icons-material/ArrowForwardIosSharp';
const Container = styled.div`
width: 100%;
height: 100vh;
display: flex;
position: relative;
overflow: hidden;
background-color: #fff6a9;
`;
const Arrow = styled.div`
width: 50px;
height: 50px;
background-color: #fff7f7;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top: 0;
bottom: 0;
left: ${(props) => props.direction === "left" && "10px"};
right: ${(props) => props.direction === "right" && "10px"};
margin: auto;
cursor: pointer;
opacity: 0.5;
z-index: 2;
`;
const Slider = () => {
return (
<Container>
<Arrow>
<ArrowBackIosSharpIcon direction="left" />
</Arrow>
<Arrow>
<ArrowForwardIosSharpIcon direction="right" />
</Arrow>
</Container>
);
}
export default Slider;
I am passing left and right as props to styled components but this is not working.
答案1
得分: 1
提供属性给Arrow组件,而不是左箭头和右箭头。
英文:
Provide props to the Arrow component not the left arrow and right arrow.
<Arrow direction="left">
<ArrowBackIosSharpIcon />
</Arrow>
<Arrow direction="right">
<ArrowForwardIosSharpIcon />
</Arrow>
答案2
得分: 0
以下是翻译好的部分:
由于您正在检查“Arrow”组件上的 props,您需要将 props 传递给它,而不是“ArrowBackIosSharpIcon”组件。像这样:
<Arrow direction="left">
<ArrowBackIosSharpIcon />
</Arrow>
<Arrow direction="right">
<ArrowForwardIosSharpIcon />
</Arrow>
此外,您可以通过条件替换渲染样式属性本身:
{(props) => props.direction === "left" && "left: 10px"};
{(props) => props.direction === "right" && "right: 10px"};
英文:
Since you are checking the props on the 'Arrow' component, you will need to pass the props to it and not the 'ArrowBackIosSharpIcon' component. Like this:
<Arrow direction="left">
<ArrowBackIosSharpIcon />
</Arrow>
<Arrow direction="right">
<ArrowForwardIosSharpIcon />
</Arrow>
Additionally, you can render the style property itself conditionally by replacing:
left: ${(props) => props.direction === "left" && "10px"};
right: ${(props) => props.direction === "right" && "10px"};
with this:
${(props) => props.direction === "left" && "left: 10px"};
${(props) => props.direction === "right" && "right: 10px"};
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论