Reactjs 如何更改数组中的布尔值?

Reactjs 如何更改数组中的布尔值?,reactjs,Reactjs,如何访问数组中的特定元素并将其值更改为相反的值?为了不复制代码,我想以这种方式显示模式窗口 const [visiblePopup, setVisiblePopup] = useState([ { modalUsers: false, modalDetails: false, modalWarning: false, modalUpdate: false } ]); <script src="https://cdnjs.cloudflare.com

如何访问数组中的特定元素并将其值更改为相反的值?为了不复制代码,我想以这种方式显示模式窗口

const [visiblePopup, setVisiblePopup] = useState([
  {
    modalUsers: false,
    modalDetails: false,
    modalWarning: false,
    modalUpdate: false
  }
]);

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
const[visiblePopup,setVisiblePopup]=useState([
{
莫达卢瑟:错,
modalDetails:错误,
modalWarning:错误,
modalUpdate:错误
}
]);

您可以尝试以下方法:

setVisiblePopup([...visiblePopup, modalUsers: true])

不要使用数组,只需使用object和create函数来切换状态

const [visiblePopup, setVisiblePopup] = useState({
  modalUsers: false,
  modalDetails: false,
  modalWarning: false,
  modalUpdate: false
});

togglePopup = name => setVisiblePopup(prevVisiblePopup => ({
  ...visiblePopup,
  [name]: !prevVisiblePopup[name]
})

togglePopup('modalUpdate'); // to toggle modalUpdate

您可以使用单独的函数来处理这些模式切换:

const [visiblePopup, setVisiblePopup] = useState({
  modalUsers: false,
  modalDetails: false,
  modalWarning: false,
  modalUpdate: false
});

toggleModalUsers = () => setVisiblePopup(prevState => ({
  ...visiblePopup,
  modalUsers: !modalUsers
})

toggleModalDetails = () => setVisiblePopup(prevState => ({
  ...visiblePopup,
  modalDetails: !modalDetails
})

toggleModalWarning = () => setVisiblePopup(prevState => ({
  ...visiblePopup,
  modalWarning: !modalWarning
})

toggleModalUpdate = () => setVisiblePopup(prevState => ({
  ...visiblePopup,
  modalUpdate: !modalUpdate
})
可能的副本: