Я изучаю React и использую новые реализованные «Крючки» из Документации.У меня проблема с модальным (диалог из пользовательского интерфейса материала) и функцией открытия / закрытия с использованием функции useEffect ().
Я уже прочитал обе эти статьи: React.useState не перезагружает состояние изprops и Как синхронизировать реквизиты в состояние с помощью React hook: setState ()
Это уже помогло мне, я забыл использовать функцию useEffect (), вместо этого я просто устанавливалuseState из того, что исходит от реквизита.Узнал, что useState будет выполнен только один раз для установки исходного состояния.Но у меня есть еще одна проблема.
function AddItemModal(props) {
const [open, setOpen] = useState(props.isOpen);
useEffect(() => {
setOpen(props.isOpen);
}, [props.isOpen]);
function handleClose() {
setOpen(false);
}
Это работает впервые, когда я нажимаю на кнопку добавления (в другом Компоненте) и обрабатываю щелчок (он меняет состояние на true), и я передаюэто как реквизит к модалу.Но когда я нажимаю (в модальном режиме) при закрытии и пытаюсь щелкнуть по добавлению, чтобы открыть его снова, ничего не происходит.В случае необходимости, вот код из компонента, где я обрабатываю щелчок и вызываю модальный.
function ItemsTable() {
const [addModalOpen, setAddModalOpen] = React.useState(false);
const handleAddClick = () => {
setAddModalOpen(true);
};
<Box mt={4} position="fixed" bottom={10} right={10}>
<Fab color="secondary" aria-label="Add" onClick={handleAddClick}>
<AddIcon />
</Fab>
</Box>
<AddItemModal isOpen={addModalOpen} />