javascript - 带有样式组件的样式函数中的 React.useContext

标签 javascript reactjs react-hooks 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 的情况下获得相同的结果? ?例如,如何 useContextstyled 内使用功能为...

const Wrapper = styled.header`
  background: ${isScrolling ? 'black' : 'transparent'};
`;

另外,我想访问const { isScrolling } = useContext(GlobalConsumer);里面styled函数,不从函数 Header 传递 props

最佳答案

我认为你不能在样式函数中做到这一点,但至少你可以将 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>
  );
};

关于javascript - 带有样式组件的样式函数中的 React.useContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57968853/

相关文章:

javascript - ES6 中的二维数组

javascript - React.js,ES6,如何访问ES6类中的react-router Lifecycle?

reactjs - 将数据插入空数组 - React useState() Hook

reactjs - React hooks 条件渲染

javascript - 为什么 Angular 加载我的根模板两次

javascript - 使用特定标准对对象数组进行分组

javascript - 如何在 jQuery DatePicker 中隐藏下一个/今天/上一个导航并关闭动画?

javascript - 当状态改变时 prop 不会更新

javascript - React 组件监听孙子事件

javascript - React Hooks 仅更新表单提交时的状态