javascript - 带有样式组件的样式函数中的 React.useContext
问题描述
我目前正在使用在函数内的元素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
?例如,如何useContext
在styled
函数内部使用...
const Wrapper = styled.header`
background: ${isScrolling ? 'black' : 'transparent'};
`;
另外,我想访问函数const { isScrolling } = useContext(GlobalConsumer);
内部styled
,而不是从函数传递道具Header
解决方案
我不认为你可以在 styled 函数中做到这一点,但至少你可以将 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>
);
};
推荐阅读
- spring-boot - 关闭或崩溃时如何在 PCF 中自动重启单个实例
- node.js - 使用 AJAX 请求从 Node JS 服务器获取数据
- ios - 无法将 .mm 文件访问到 swift4
- reactjs - React ES6 的 HOC 中 props 参数如何工作?
- google-apps-script - 谷歌脚本参考错误
- sql - Postgres 与 Order By 一起使用时执行 seq 扫描
- jquery - 如何使用 JQuery 在 SWAL 中成功调用函数?
- maven - H2-数据库异常“引起:org.h2.jdbc.JdbcSQLException:找不到序列“SYSTEM_SEQUENCE_*”;” 在运行 Junit 测试用例时
- reactjs - 无法通过 prevState 更新响应中的表单字段
- c# - 无法从程序集中加载类