加载时,需要禁用 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>
);
}
慕田峪4524236
相关分类