为了账号安全,请及时绑定邮箱和手机立即绑定

如何减少模态使用 useState 的次数?

如何减少模态使用 useState 的次数?

慕沐林林 2023-03-24 13:56:47
我有一个关于在一个 useState 中使用多个状态的问题。我有两个按钮(大约 10 个),单击按钮后,它会显示一些典型信息,仅适用于一个按钮(选择)。所以每个按钮的状态必须是单独的。有什么方法可以将所有按钮减少到一个 useState 吗?我现在有:  const [showConfirmModalGoals, setShowConfirmModalGoals] = useState(false);  const [showConfirmModalBallPos, setShowConfirmModalBallPos] = useState(false);    const showModalForGoals = () => {    setShowConfirmModalGoals(true);  };    const hideModalForGoals = () => {    setShowConfirmModalGoals(false);  };  const showModalForBallPos = () => {    setShowConfirmModalBallPos(true);  };    const hideModalForBallPos = () => {    setShowConfirmModalBallPos(false);  };return(<Modal show={showConfirmModalGoals} ... > GOALS </Modal><Button onClick={showModalForGoals} /><Modal show={showConfirmModalBallPos} ... > Ball position</Modal><Button onClick={showModalForBallPos} />);所以如果我要 10 个不同内容的按钮,我需要这些按钮有 10 个不同的状态。
查看完整描述

2 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

不!所有按钮只需要一个模式。

const [showModal, setShowModal] = useState(false);

然后,对于每个按钮:

<Button onClick={() => setShowModal(true)} />

然后您将根据单击的按钮更改模态框的内容(页眉、正文和页脚)。


查看完整回答
反对 回复 2023-03-24
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

您可以为所有状态使用一个对象。


const [showConfirmModals, setShowConfirmModals] = useState({

  showConfirmModalGoals: false,

  showConfirmModalBallPos: false,

});


// ...


setShowConfirmModals({

  ...showConfirmModals,

  showConfirmModalGoals: true

})


查看完整回答
反对 回复 2023-03-24
  • 2 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信