javascript - 样式化组件 onClick 旋转元素

标签 javascript reactjs react-hooks styled-components

我试图在单击时向元素添加旋转。每次我想点击元素时,元素应该旋转。我正在使用 CSS 变换属性旋转元素。波纹管是我的样式组件:

const IconButtonWrapper = styled.div`
  transform: rotate(0deg);
  overflow: hidden;
  transition: all 0.3s ease-out;
  ${({ rotate }) => rotate && `transform: rotate(360deg)`};
`;
我有渲染元素的 React 组件,并且有 onClick事件:
const IconButtonContainer = () => {
  const [rotate, setRotate] = useState(false);

  const handleClick = () =>
    setRotate(
      (prevState) => ({ rotate: !prevState.rotate }),
      () => console.log(this.state.rotate)
    );

  return (
    <IconButtonWrapper rotate={rotate} onClick={handleClick}>
      <IconButton />
    </IconButtonWrapper>
  );
};
当我第一次单击时,一切都按预期工作,但是当我第二次单击时,不再起作用。我觉得我应该回到默认状态 rotate: false过渡之后,但我如何在样式组件中做到这一点?
这是一个工作链接 Sandbox

最佳答案

技术上 rotate已经是 bool 值 所以prevState应该是 bool 值 以及。您还试图将对象设置为 rotate状态值而不是简单的 bool 值 .
基于此,您只需要否定 prevState而不是 prevState.rotate作为:

setRotate(prevState => !prevState)
查看来自!prevState.rotate的代码修改至 !prevState .
还建议阅读 Using the State Hook .它与类组件有点不同。

关于javascript - 样式化组件 onClick 旋转元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64105970/

相关文章:

javascript - 每个键必须是一些字符串;得到未定义的 Protractor

javascript - HTML根据另一个数字更新数字

javascript - 根据条件 react native 显示 View

reactjs - react useEffect 钩子(Hook)和 eslint 警告

javascript - 将 Hooks 与 Redux 一起使用——不好的做法?

javascript - 如何在另一个自定义 Hook 中使用返回值的自定义 Hook ?

javascript - 如何获得缺失的坐标以使我的线垂直于另一条线?

javascript - 如何将 span 包裹在元素中的每个文本部分?

javascript - 当 Formik 表单更改时更新另一个组件

javascript - 如何只选中选中的复选框并在 React Native 中获取它的值?