React.useContext 在带样式组件的样式函数中
React.useContext in styled function with styled components
我目前正在使用 useContext
在函数内的元素中设置 className
。例如...
const Wrapper = styled.header`
background: transparent;
&.active {
background: black;
}
`;
const Header = () => {
const { isScrolling } = useContext(GlobalConsumer);
return (
<Wrapper className={isScrolling ? 'active' : ''}>
Header
</Wrapper>
);
};
但是,如何在不设置 className
的情况下获得相同的结果?例如,如何在 styled
函数中使用 useContext
作为...
const Wrapper = styled.header`
background: ${isScrolling ? 'black' : 'transparent'};
`;
此外,我想在 styled
函数中访问 const { isScrolling } = useContext(GlobalConsumer);
,而不是从函数 Header
传递道具
我不认为你可以在样式函数中完成它,但至少你可以将 className 更改为 prop:
import styled, { css } from 'styled-components';
const Wrapper = styled.header`
background: transparent;
${props => props.active && css`
background: black;
`}
`;
const Header = () => {
const { isScrolling } = useContext(GlobalConsumer);
return (
<Wrapper active={isScrolling}>
Header
</Wrapper>
);
};
我目前正在使用 useContext
在函数内的元素中设置 className
。例如...
const Wrapper = styled.header`
background: transparent;
&.active {
background: black;
}
`;
const Header = () => {
const { isScrolling } = useContext(GlobalConsumer);
return (
<Wrapper className={isScrolling ? 'active' : ''}>
Header
</Wrapper>
);
};
但是,如何在不设置 className
的情况下获得相同的结果?例如,如何在 styled
函数中使用 useContext
作为...
const Wrapper = styled.header`
background: ${isScrolling ? 'black' : 'transparent'};
`;
此外,我想在 styled
函数中访问 const { isScrolling } = useContext(GlobalConsumer);
,而不是从函数 Header
我不认为你可以在样式函数中完成它,但至少你可以将 className 更改为 prop:
import styled, { css } from 'styled-components';
const Wrapper = styled.header`
background: transparent;
${props => props.active && css`
background: black;
`}
`;
const Header = () => {
const { isScrolling } = useContext(GlobalConsumer);
return (
<Wrapper active={isScrolling}>
Header
</Wrapper>
);
};