enter image description here

我有一个产品图像和相关的按钮显示在网格容器内.这些按钮是基于一些状态变量的conditionally rendered.基本上,如果产品数量为0,则显示Button (ADD TO CART)Button Group (with '-' , 'quantity' , '+' buttons).

我希望按钮有一个稍微在底部图像边界内的位置.这是使用Styleprops 成功地为单个Add to Cart按钮实现的,但是传递给Button组的相同样式props 并不反映预期的行为.因此该按钮在交互时围绕图像底部来回浮动.如有任何修改,敬请惠顾!

代码如下:

<Grid container item xs={2} direction="column" alignItems="center">
      <Grid item sx={{ height: '70%' }}>
        <Box
          component="img"
          src={`/assets/images/products/product_3.jpg`}
          sx={{
            width: '100%',
            height: '100%',
            objectFit: 'cover',
            borderRadius: 1.5,
          }}
        />
      </Grid>
      <Grid item>
        {!productInCart ? (
          <Button
            variant="contained"
            style={{
              top: '-10px',
            }}
            onClick={handleAddToCart}
          >
            ADD TO CART
          </Button>
        ) : (
          <ButtonGroup
            variant="contained"
            style={{
              top: '-10px',
            }}
          >
            <Button onClick={handleRemoveFromCart}>-</Button>
            <Button>{productInCart.quantity}</Button>
            <Button onClick={handleAddToCart}>+</Button>
          </ButtonGroup>
        )}
      </Grid>
    </Grid>

推荐答案

我建议你在image中添加marginBottom,并从按钮/按钮组中删除style属性,这样你就不会有双重样式,而且,如果按钮位置和按钮组位置之间不匹配,你会在它们之间切换时看到一些闪烁.(如您上传的图片)

<Grid container item xs={2} direction="column" alignItems="center">
  <Grid item sx={{ height: '70%' }}>
    <Box
      component="img"
      src={`/assets/images/products/product_3.jpg`}
      sx={{
        width: '100%',
        height: '100%',
        objectFit: 'cover',
        borderRadius: 1.5,
        marginBottom: '10px'
      }}
    />
  </Grid>
  <Grid item>
    {!productInCart ? (
      <Button
        variant="contained"
        onClick={handleAddToCart}
      >
        ADD TO CART
      </Button>
    ) : (
      <ButtonGroup
        variant="contained"
      >
        <Button onClick={handleRemoveFromCart}>-</Button>
        <Button>{productInCart.quantity}</Button>
        <Button onClick={handleAddToCart}>+</Button>
      </ButtonGroup>
    )}
  </Grid>
</Grid>

Javascript相关问答推荐

如何在不分配整个数组的情况下修改包含数组的行为主体?

了解Node.js中的EventEums和浏览器中的addEventEums之间的关系

如何在mongoose中链接两个模型?

用JavaScript复制C#CRC 32生成器

React.Development.js和未捕获的ReferenceError:未定义useState

当输入字段无效时,我的应用程序不会返回错误

在Matter.js中添加从点A到另一个约束的约束

如何将未排序的元素追加到数组的末尾?

类构造函数忽略Reaction Native中的可选字段,但在浏览器中按预期工作

Reaction组件在本应被设置隐藏时仍显示

Reaction-SWR-无更新组件

MongoDB受困于太多的数据

在Odoo中如何以编程方式在POS中添加产品

无法重定向到Next.js中的动态URL

FireBase FiRestore安全规则-嵌套对象的MapDiff

连续添加promise 时,如何在所有promise 都已结算时解除加载覆盖

我们是否可以在reactjs中创建多个同名的路由

在范围数组中查找公共(包含)范围

如何在Java脚本中添加一个可以在另一个面板中垂直调整大小的面板?

如何在preLoad()中自定义p5.js默认加载动画?