我有一个来自后端的列表.此列表显示用户的发票.如果用户没有 Select 至少一张发票,我希望该按钮被禁用.如果用户 Select 了至少一张发票,我希望该按钮处于活动状态.但是发票和按钮在不同的组件中.

payment-table.js

这里IDE这样警告我;'setEnabledButton' is assigned a value but never used.

  const [selectedItems, setSelectedItems] = useState([]);

  const [enabledButton, setEnabledButton] = useState();

  useEffect(() => {
    if (selectedItems.length > 0) {
      setEnabledButton = true;
    } else {
      setEnabledButton = false;
    }
  }, [selectedItems]);

policy-payment-info.js

<div className={hiddenControlButtonClass}>
  <AS.Button variant="outlined" onClick={handlePayment} enabledButton>
    {t('policy-payment-info.continue')}
  </AS.Button>
</div>

推荐答案

首先为useState函数设置默认状态:

  const [enabledButton, setEnabledButton] = useState(false);

在此之后,需要通过添加()执行seState

这样地:

 useEffect(() => {
    if (selectedItems.length > 0) {
      setEnabledButton(true);
    } else {
      setEnabledButton(false);
    }
  }, [selectedItems]);

然后,您需要使用此状态来启用或禁用按钮:

<div className={hiddenControlButtonClass}>
  <AS.Button variant="outlined" onClick={handlePayment} disabled={enabledButton}>
    {t('policy-payment-info.continue')}
  </AS.Button>
</div>

Javascript相关问答推荐

在页面上滚动 timeshift 动垂直滚动条

如何用显示网格平滑地将元素从一个地方移动到另一个地方?

调用removeEvents不起作用

docx.js:如何在客户端使用文档修补程序

MongoDB中的引用

如何在Javascript中的控制台上以一行形式打印循环的结果

Websocket错误—有一个或多个保留位开启:reserved1 = 1,reserved2 = 0,reserved3 = 0

Chart.js-显示值应该在其中的引用区域

使用父标签中的Find函数查找元素

JS Animate()方法未按预期工作

在D3条形图中对具有相同X值的多条记录进行分组

用于测试其方法和构造函数的导出/导入类

JAVASCRIPT SWITCH CASE语句:当表达式为';ALL';

如何在TransformControls模式下只保留箭头进行翻译?

Chrome上的印度时区名S有问题吗?

更新文本区域行号

React数组查找不读取变量

Google OAuth 2.0库和跨域开放程序的问题-策略错误

将数据添加到数据库时不输出

如何使用属性访问器定义循环的for...的局部变量