Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用参数调用父函数_Javascript_Reactjs - Fatal编程技术网

Javascript 使用参数调用父函数

Javascript 使用参数调用父函数,javascript,reactjs,Javascript,Reactjs,我有两个文件(父文件和子文件)。 我希望孩子们能发挥父母的作用。没问题,我能行。另一方面,当我为函数提供参数时,我无法从父函数获取参数 家长: import React from 'react'; import { makeStyles } from '@material-ui/core/styles'; import List from '@material-ui/core/List'; import ListItem from '@material-ui/core/ListItem'; im

我有两个文件(父文件和子文件)。 我希望孩子们能发挥父母的作用。没问题,我能行。另一方面,当我为函数提供参数时,我无法从父函数获取参数

家长:

import React from 'react';
import { makeStyles } from '@material-ui/core/styles';
import List from '@material-ui/core/List';
import ListItem from '@material-ui/core/ListItem';
import ListItemIcon from '@material-ui/core/ListItemIcon';
import ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';
import ListItemText from '@material-ui/core/ListItemText';
import AuthentificationService from "../../api/AuthentificationService"
import IconButton from '@material-ui/core/IconButton';
import DeleteIcon from '@material-ui/icons/Delete';
import ModalDelete from "../Modal/ModalDelete"
import SimplePopover from "./AddUser";

const useStyles = makeStyles(theme => ({
    root: {
        width: '100%',
        maxWidth: 360,
        backgroundColor: theme.palette.background.paper,
    },
}));

export default function CheckboxList(props) {
    const classes = useStyles();
    const [deleteIt, setDeleteIt] = React.useState(false);
    const [checked, setChecked] = React.useState([0]);
    const [id, setId] = React.useState(0);

    const handleToggle = value => () => {
        const currentIndex = checked.indexOf(value);
        const newChecked = [...checked];

        if (currentIndex === -1) {
            newChecked.push(value);
        } else {
            newChecked.splice(currentIndex, 1);
        }

        setChecked(newChecked);

        alert(value.email)
    };

    const confirmationDeleteUser = value => () => {
        setId(value.id);
        setDeleteIt(true);
    }


/// Here i would like to have my arguments value
    const setDeleteStateAndDelete = value => () => {
        console.log(value); // when i print the value it is empty
        setDeleteIt(false);
    }

    return (
            <div>
                <div>
                    {deleteIt === false ?  "" : <ModalDelete parentMethod={setDeleteStateAndDelete()} title="Suppresion utilisateur" message="Vous allez supprimer un utilisateur, êtes-vous sur ? "/>}
                </div>
            {props.response.map( test => {

                if (props.response.length <= 1) {

                } else {
                    return (
                        <div>
                            <List className={classes.root}>
                        <ListItem key={test} role={undefined} dense button onClick={handleToggle(test)}>
                            <ListItemText primary={`${test.email}`}/>
                            <ListItemSecondaryAction>
                                <IconButton edge="end" aria-label="delete" href="">
                                    <DeleteIcon onClick={confirmationDeleteUser(test)}/>
                                </IconButton>
                            </ListItemSecondaryAction>
                        </ListItem>
                            </List>
                        </div>
                    );
                }
            })}
        </div>
    );
}


从“React”导入React;
从'@material ui/core/styles'导入{makeStyles};
从“@material ui/core/List”导入列表;
从“@material ui/core/ListItem”导入ListItem;
从“@material ui/core/ListItemIcon”导入ListItemIcon;
从“@material ui/core/ListItemSecondaryAction”导入ListItemSecondaryAction;
从“@material ui/core/ListItemText”导入ListItemText;
从“../../api/AuthentificationService”导入AuthentificationService
从“@material ui/core/IconButton”导入IconButton;
从“@material ui/icons/Delete”导入DeleteIcon;
从“./Modal/ModalDelete”导入ModalDelete
从“/AddUser”导入SimplePover;
const useStyles=makeStyles(主题=>({
根目录:{
宽度:“100%”,
最大宽度:360,
背景色:theme.palete.background.paper,
},
}));
导出默认功能复选框列表(道具){
const classes=useStyles();
const[deleteIt,setDeleteIt]=React.useState(false);
const[checked,setChecked]=React.useState([0]);
const[id,setId]=React.useState(0);
const handleToggle=value=>()=>{
const currentIndex=checked.indexOf(值);
const newChecked=[…checked];
如果(当前索引==-1){
newChecked.push(值);
}否则{
新检查。拼接(当前索引,1);
}
setChecked(newChecked);
警报(value.email)
};
常量确认删除用户=值=>()=>{
setId(value.id);
setDeleteIt(true);
}
///这里我想让我的参数值
const setDeleteStateAndDelete=value=>()=>{
console.log(value);//当我打印值时,它是空的
setDeleteIt(false);
}
返回(
{deleteIt==false?”:}
{props.response.map(测试=>{

如果(props.response.length,则必须交换函数的参数,如下所示:

const setDeleteStateAndDelete = () => value => {
    console.log(value); // when i print the value it is empty
    setDeleteIt(false);
}
setDeleteStateAndDelete = value => {...}
<ModalDelete parentMethod={setDeleteStateAndDelete} title="Suppresion utilisateur" message="Vous allez supprimer un utilisateur, êtes-vous sur ? "/>}
第一次调用时将调用第一个参数(此处为())

第二次调用将传递给value参数。在您的情况下,该值将是未定义的,因为您在第一次调用中设置了value,而它为空,因为您调用了
setDeleteStateAndDelete()
。第二次调用的值将被忽略,因为参数调用为空(())

切换它,值应该从子组件设置

由于您没有将函数的首字母()固定在一起,因此还可以删除第一个括号,如下所示:

const setDeleteStateAndDelete = () => value => {
    console.log(value); // when i print the value it is empty
    setDeleteIt(false);
}
setDeleteStateAndDelete = value => {...}
<ModalDelete parentMethod={setDeleteStateAndDelete} title="Suppresion utilisateur" message="Vous allez supprimer un utilisateur, êtes-vous sur ? "/>}
设置如下:

const setDeleteStateAndDelete = () => value => {
    console.log(value); // when i print the value it is empty
    setDeleteIt(false);
}
setDeleteStateAndDelete = value => {...}
<ModalDelete parentMethod={setDeleteStateAndDelete} title="Suppresion utilisateur" message="Vous allez supprimer un utilisateur, êtes-vous sur ? "/>}
}

希望这能有所帮助。

您必须为函数交换参数,如下所示:

const setDeleteStateAndDelete = () => value => {
    console.log(value); // when i print the value it is empty
    setDeleteIt(false);
}
setDeleteStateAndDelete = value => {...}
<ModalDelete parentMethod={setDeleteStateAndDelete} title="Suppresion utilisateur" message="Vous allez supprimer un utilisateur, êtes-vous sur ? "/>}
第一次调用时将调用第一个参数(此处为())

第二次调用将传递给value参数。在您的情况下,该值将是未定义的,因为您在第一次调用中设置了value,而它为空,因为您调用了
setDeleteStateAndDelete()
。第二次调用的值将被忽略,因为参数调用为空(())

切换它,值应该从子组件设置

由于您没有将函数的首字母()固定在一起,因此还可以删除第一个括号,如下所示:

const setDeleteStateAndDelete = () => value => {
    console.log(value); // when i print the value it is empty
    setDeleteIt(false);
}
setDeleteStateAndDelete = value => {...}
<ModalDelete parentMethod={setDeleteStateAndDelete} title="Suppresion utilisateur" message="Vous allez supprimer un utilisateur, êtes-vous sur ? "/>}
设置如下:

const setDeleteStateAndDelete = () => value => {
    console.log(value); // when i print the value it is empty
    setDeleteIt(false);
}
setDeleteStateAndDelete = value => {...}
<ModalDelete parentMethod={setDeleteStateAndDelete} title="Suppresion utilisateur" message="Vous allez supprimer un utilisateur, êtes-vous sur ? "/>}
}
希望这有帮助

传递函数名称,而不是返回值

传递函数名称,而不是返回值


不,这是不对的,因为setDeleteStateAndDelete实际上是一个工厂函数。它返回一个函数本身,所以这不是问题。如果setDeleteStateAndDelete只是一个函数,setDeleteStateAndDelete parentMethod={setDeleteStateAndDelete}最好。不,这是不对的,因为setDeleteStateAndDelete实际上是一个工厂函数。它本身返回一个函数,所以这不是问题。如果setDeleteStateAndDelete是一个简单的函数,setDeleteStateAndDelete parentMethod={setDeleteStateAndDelete}将是最好的。