【问题标题】:Styled Components Props React js样式化组件道具 React js
【发布时间】:2019-12-28 03:35:48
【问题描述】:

我将一个属性传递给我的样式化组件。基本上我通过了他以400px开头的身高。

当我点击一个按钮时,它会转到30px,但我的div400px 开头,当我点击按钮时,它会转到30px,然后不展开不再是高度尺寸:

export default function Menu() {
    const [open, setOpen] = useState(true); // declare new state variable "open" with setter
    const handleClick = e => {
      e.preventDefault();
      setOpen(false);
    };
    return (
      <DivMenuButton height={open ? '400px' : '30px'}>
        <button
          style={{ margin:0, padding: 0, height: "30px", width: "100%", borderRadius:'0px' }}
          onClick={handleClick}
        >
          Button
        </button>
      </DivMenuButton>  
    );
}

我的样式化组件:

import React from 'react';
import styled from 'styled-components';

export const DivMenuButton = styled.div`
    border: 0px;
    background-color: #000; // was wrong syntax
    width: 200px;
    height: ${props => props.height}
`;

代码: https://codesandbox.io/s/beautiful-nightingale-fsm58

【问题讨论】:

    标签: reactjs styled-components


    【解决方案1】:

    您的代码实际上是正确的(几乎)。

    道具和样式组件部分正确。

    你做错的事情是你总是在单击按钮时将 open 设置为 false,而不是设置为与之前相反的值。

    所以,不要这样做:

    const handleClick = e => {
      e.preventDefault();
      setOpen(false);
    };
    

    你应该这样做:

    const handleClick = e => {
      e.preventDefault();
      setOpen(!open);
    };
    

    【讨论】:

    • 它工作了,但我有点困惑我声明我的状态为真,当你点击我设置为假时这是不正确的吗?
    • @MykonSpt 回复您的第一条评论:考虑一下:如果您每次单击时都将状态设置为 false,则它永远不会再次变为 true。您需要将其设置为与之前的相反
    猜你喜欢
    • 2019-03-03
    • 2021-09-18
    • 2021-09-15
    • 2021-03-09
    • 2021-01-13
    • 2020-06-11
    • 1970-01-01
    • 2018-05-18
    • 2019-12-16
    相关资源
    最近更新 更多