亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

應用按鈕需要被禁用,但無法禁用 Toggler2 按鈕的 onclick

應用按鈕需要被禁用,但無法禁用 Toggler2 按鈕的 onclick

慕標琳琳 2023-06-09 14:46:54
加載時,需要禁用 Apply 按鈕并單擊 Toggler1 按鈕,我想更改狀態,即其中一個選項卡標志將為 true,因此應啟用 apply 按鈕,一旦標志在任何選項卡中為 true 并且何時任何選項卡中的標志都是假的,應用按鈕應該被禁用,當我們點擊 Toggler2 按鈕時,我正在設置標志條件為 flase 的狀態,無法禁用應用按鈕。我正在檢查標志的條件,基于此我正在設置狀態,即 setEdit(flase),因為它在循環中,所以無法正確設置狀態點擊 Toggeler1 按鈕,應用按鈕將被啟用,點擊切換器 2,應用按鈕需要被禁用但無法禁用應用按鈕,即使數據中的標志為 false?import React from "react";import "./styles.css";export default function App() {? let items = [? ? {? ? ? tab: "tab1",? ? ? info: [? ? ? ? { mnemonic: "first", flag: false },? ? ? ? { mnemonic: "second", flag: false }? ? ? ]? ? },? ? {? ? ? tab: "tab2",? ? ? info: [? ? ? ? { mnemonic: "first", flag: false },? ? ? ? { mnemonic: "second", flag: false }? ? ? ]? ? },? ? {? ? ? tab: "tab3",? ? ? info: [? ? ? ? { mnemonic: "first", flag: false },? ? ? ? { mnemonic: "second", flag: false }? ? ? ]? ? }? ];? let item2 = [? ? {? ? ? tab: "tab1",? ? ? info: [? ? ? ? { mnemonic: "first", flag: true },? ? ? ? { mnemonic: "second", flag: false }? ? ? ]? ? },? ? {? ? ? tab: "tab2",? ? ? info: [? ? ? ? { mnemonic: "first", flag: false },? ? ? ? { mnemonic: "second", flag: false }? ? ? ]? ? },? ? {? ? ? tab: "tab3",? ? ? info: [? ? ? ? { mnemonic: "first", flag: false },? ? ? ? { mnemonic: "second", flag: false }? ? ? ]? ? }? ];? const [edit, setEdit] = React.useState(true);? const [data, setData] = React.useState(items);? const changeFlag = () => {? ? setData(item2);? };? const changeFlag1 = () => {? ? setData(items);? };? React.useEffect(() => {? ? data.forEach((_eachItem) => {? ? ? const isChanged = _eachItem.info.find((_each) => _each.flag);? ? ? if (isChanged) {? ? ? ? setEdit(false);? ? ? }? ? });? }, [data]);? console.log(data);? return (? ? <div className="App">? ? ? <button onClick={changeFlag}> Toggler1</button>? ? ? <button onClick={changeFlag1}> Toggler2</button>? ? ? <button disabled={edit}> Apply</button>? ? </div>? );}
查看完整描述

1 回答

?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

您正在尋找數組中的某些項目data,以使數組中的某些元素info具有真實flag值。這可以通過Array.prototype.some()來完成。


const isChanged = data.some((item) => item.info.some((el) => el.flag));

您的效果需要檢查是否滿足此條件,并edit使用相反的條件更新狀態以禁用 Apply 按鈕。


React.useEffect(() => {

? const isChanged = data.some((item) => item.info.some((el) => el.flag));

? setEdit(!isChanged);

}, [data]);

編輯 apply-button-need-to-be-disabled-but-unable-to-disable-onclick-of-toggler2-butto


或者,您可以使用 Array.prototype.every 并檢查所有數據項是否都具有錯誤信息標志并返回并為編輯/禁用模式設置肯定確認。


React.useEffect(() => {

? const isChanged = data.every((item) => item.info.every(({ flag }) => !flag));

? setEdit(isChanged);

}, [data]);


查看完整回答
反對 回復 2023-06-09
  • 1 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號