当前位置: 首页 > 知识库问答 >
问题:

onClick函数在运行时起作用,但在实际单击时不起作用

单于山
2023-03-14

我试图在单击按钮或菜单项时将用户重定向到另一个页面。不幸的是,onClick函数只在运行时起作用,在实际单击时不起作用,我不知道为什么。

这是我的功能

  const redirectCreateContact = (index) => {
  history.push({
    state: {category:index},
    pathname:"/apps/contacts/new/"

  });

  return <Redirect to={{
    pathname: '/apps/contacts/new/',
  }}/>;
}

function ContactsHeader(props)
{

    return (
        <div className="flex flex-1 items-center justify-between p-8 sm:p-24">

            <div className="flex flex-shrink items-center sm:w-224">
                <Hidden lgUp>
                    <IconButton
                        onClick={(ev) => {
                            props.pageLayout.current.toggleLeftSidebar()
                        }}
                        aria-label="open left sidebar"
                    >
                        <Icon>menu</Icon>
                    </IconButton>
                </Hidden>

                <div className="flex items-center">
                    <FuseAnimate animation="transition.expandIn" delay={300}>
                        <Icon className="text-32 mr-12">account_box</Icon>
                    </FuseAnimate>
                    <FuseAnimate animation="transition.slideLeftIn" delay={300}>
                        <Typography variant="h6" className="hidden sm:flex">Contacts</Typography>
                    </FuseAnimate>
                </div>
            </div>

            <div className="flex flex-1 items-center justify-center pr-8 sm:px-12">

                <ThemeProvider theme={props.mainTheme}>
                    <FuseAnimate animation="transition.slideLeftIn" delay={300}>
                        <Paper className="flex p-4 items-center w-full max-w-512 px-8 py-4" elevation={1}>

                            <Icon className="mr-8" color="action">search</Icon>

                            <Input
                                placeholder="Search for anything"
                                className="flex flex-1"
                                disableUnderline
                                fullWidth
                                inputProps={{
                               'aria-label': 'Search'
                                }}

                            />
                        </Paper>
                    </FuseAnimate>
                </ThemeProvider>
            </div>

          <div className="flex flex-2 items-center justify-center">
          <FormControl variant="filled" style={{width:"200px"}}>
            <InputLabel >Create New</InputLabel>
            <Select
              labelId="demo-simple-select-filled-label"
              id="demo-simple-select-filled"
            >
              <Button className='button-redirect' onClick={()=>redirectCreateContact(1)}>New Custom</Button>

              <MenuItem className='button-redirect' onClick={()=>redirectCreateContact(2)}>New Supplier</MenuItem>

            </Select>
          </FormControl>
          </div>
        </div>
    );
}

export default withRouter(ContactsHeader);

如果我调用函数时没有这样的回调

onClick ={redirectCreateContact(2)}

它在运行时调用,而不是在实际单击按钮或菜单项时调用。被调用的函数没有任何问题(我尝试过在单击时console.log一些东西,但没有结果)。

我错过了什么或做错了什么?

共有3个答案

双元魁
2023-03-14

您应该替换为如下:

<Button className='button-redirect' onClick={()=>redirectCreateContact(1)}>New Custom</Button>
纪翰
2023-03-14

在MenuItem上调用redirectCreatecontact(2)方法与在Button onClick调用上调用不同,是否存在通过箭头函数调用该方法的原因?您是否尝试将代码更改为:

<MenuItem className='button-redirect' onClick={redirectCreateContact(2)}>New Supplier</MenuItem>

我只删除()=

这是我能看到的唯一区别

明安阳
2023-03-14

问题就在这里onClick={redirectCreateContact(1)}

您正在执行渲染函数

点击 = {() =

 类似资料:
  • 问题内容: 我已经设置了版本4 的React。当我直接在浏览器中输入URL时,路由有效,但是当我单击链接时,URL在浏览器上发生了变化(例如http:// localhost:8080 / categories ),但是内容不会更新(但是如果我刷新,它会更新)。 以下是我的设置: 该 Routes.js 设置如下: 我在 Nav.js 中使用的链接如下: 该 App.js 如下: 问题答案: 包装

  • 我正在用datediff从current_timestamp查询时间戳列。但它给出了误差。 产出: 错误:Redshift表不支持指定的类型或函数(每个信息消息一个)。 警告:不支持函数“timestamp”(带有时区的timestamp)“。不支持函数“timestamptz(带时区的timestamp,integer)”。不支持函数“timestamptz(text)”。 但是如果我使用get

  • 为什么onclick不起作用?但是,当我在不同的脚本标记中定义函数时,它是有效的。

  • 我正在Android系统上使用简单数据格式。我试图将时间从美国语言环境转换为瑞典语。它在模拟器中工作正常,但当我在真实设备上测试时,它不起作用。 提前谢谢。

  • 问题内容: 我在我的角度web应用程序。 当我在浏览器中键入内容时,它会重定向到我期望的位置,但是当我单击时,它不会重定向,而是停留在url上。 我的控制台没有错误,我也不知道为什么。 当不再工作时 我在这里看到了一个类似的问题AngularUI-Router$urlRouterProvider。我尝试了答案,但它仍然对我不起作用。 这是我的coffeescript代码: 问题答案: 先前的解决方

  • 我已经可以切换到iframe,然后点击图像选择[如图1所示]然后不能点击div-预览按钮[如图2-蓝色按钮]这是“应用和关闭”。 知道吗?