我有一个基于某些道具的组件,我希望能够在悬停时更改背景。但根据其他道具,悬停应该什么都不做。这可能吗?
export const Container = styled.div`
&:hover {
background: ${({ shouldHover }) => shouldHover ? 'red' : '' };
}
`
但是这不起作用。有什么建议可以做到吗?
答案 0 :(得分:1)
这对我有用
import React from "react";
import ReactDOM from "react-dom";
import styled from "styled-components";
const Container = styled.div`
& > h2 {
&:hover {
background: ${props => (props.shouldHover ? "red" : "none")};
}
}
`;
function App({ shouldHover }) {
return (
<Container shouldHover>
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic shappen!</h2>
</Container>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App shouldHover />, rootElement);
答案 1 :(得分:0)
您可以尝试以下方法,这可能会有所帮助:
import { css, styled } from 'styled-components'
styled.div`
${props => props.shouldHover && css`
&:hover {
background: 'red';
}
`}
`
答案 2 :(得分:0)
这将起作用:
export const Container = styled.div`
${ props => props.shouldHover
? '&:hover { background: red }'
: ''
}
`;
答案 3 :(得分:0)
您可以根据传递的道具来设置背景条件。下面是一个示例,其中div根据多个不同条件进行了更改。
const Container = styled.div`
background: blue;
&:hover {
background: ${props => props.shouldHoverRed
? 'red'
: props.shouldHoverGreen
? 'green'
: props.shouldHoverOrange
? 'orange'
: 'blue'
};
}
`
默认为蓝色,并且取决于传递的道具,它将为悬停时的背景呈现不同的颜色。