0

我不是 React 专家,因此我有一个问题要问你 - 如何从以下位置调用我的弹出窗口:

import {options, columns,convertToArray} from './consts'

    const index = () => {

        const {data, loading, error, performFetch} = fetchHook({path: "/xxx/yyy", fetchOnMount: true})

        return (
            <div className={classes.Container}>
                <h1>List of products</h1>
                <Divider className={classes.Divider} />
                <ProductTable data={convertToArray(data)} options={options} columns={columns}/>
            </div>
        )
    }

    export default index;

常量.js

export const actions = (productPropertyId, showModal) => {
    const productDetails = (productPropertyId) => {
    }

    const removeProduct = (productPropertyId, showModal) => {
    actions(productPropertyId, showModal);

    return (
        <div className={classes.actionsContainer}>
            <Button
                onClick={() => productDetails(productPropertyId)}
            > {"More"}
            </Button>
            <Button
                const removeProduct = (productPropertyId, showModal) => {
    actions(productPropertyId, showModal);
            >{"Remove"}
            </Button>
        </div>
    )
};


export const convertToArray = (productList) => {
    let products = []
    if (productList != null) {
        productList.map(product => {
           column1, column2, column3, actions(product.id)]
            products.push(prod)
        })
    }
    return products;
};

我的弹出窗口是 --><FormDialog/>基于反应材料。

是否可以在这个地方调用弹出窗口?

我有一个带有一些列的反应材料表。最后一列包含 2 个按钮,其中一个是“删除”(行)。在这里,我想调用我的弹出窗口。也许我应该重建我的结构?

更新

下面是我的弹出窗口 - 我想知道如何从上面的地方运行这个弹出窗口:

const formDialog = (popupOpen) => {
    const [open, setOpen] = React.useState(false);

    const handleClickOpen = () => {
        setOpen(true);
    };

    const handleClose = () => {
        setOpen(false);
    };

    return (
        <div>
            {/*<Button variant="outlined" color="primary" onClick={handleClickOpen}>*/}
            {/*    Open alert dialog*/}
            {/*</Button>*/}
            <Dialog open={open} onClose={handleClose} aria-labelledby="form-dialog-title">
                <DialogTitle id="form-dialog-title">Subscribe</DialogTitle>
                <DialogContent>
                    <DialogContentText>
                        To subscribe to this website, please enter your email address here. We will send updates
                        occasionally.
                    </DialogContentText>
                    <TextField
                        autoFocus
                        margin="dense"
                        id="name"
                        label="Email Address"
                        type="email"
                        fullWidth
                    />
                </DialogContent>
                <DialogActions>
                    <Button onClick={handleClose} color="primary">
                        Cancel
                    </Button>
                    <Button onClick={handleClose} color="primary">
                        Subscribe
                    </Button>
                </DialogActions>
            </Dialog>
        </div>
    );
}

export default formDialog;

更新 2

我更新了我的代码,考虑到您回复中的提示,见上文。我可以在我的中添加一个参数 showModal,export const actions = (productPropertyId, showModal)然后用不同的 showModal 值调用这个组件吗?不幸的是,当我点击删除按钮时,我的弹出窗口没有出现:(

4

1 回答 1

1

您可以有条件地调用它并使用一些状态变量来控制它。像这样:

const [removeModal, removeToggle] = useState(false);
return (<>
<div className={classes.actionsContainer}>
            <Button
                onClick={() => productDetails(productPropertyId)}
            > {"More"}
            </Button>
            <Button
                onClick={() => removeToggle(true)}
            >{"Remove"}
            </Button>
        </div>
{removeModal ? <YourComponent /> : ''}
</>
)

我在那里使用了一个反应片段,<></>只是将模态 div 定位在主 div 之外,但您也可以在主 div 内调用它(我通常这样做并设置,position: fixed所以模态/弹出窗口出现在所有内容的顶部)。

于 2020-02-22T00:08:47.270 回答