
import React from 'react'; import AppBar from '@material-ui/core/AppBar'; import Toolbar from '@material-ui/core/Toolbar'; import Button from '@material-ui/core/Button'; import Typography from '@material-ui/core/Typography'; import DashboardIcon from '@material-ui/icons/Dashboard'; import IconButton from '@material-ui/core/IconButton'; import {Link} from 'react-router-dom'; import Menu from '@material-ui/core/Menu'; import MenuItem from '@material-ui/core/MenuItem'; class Header extends React.Component { constructor(props) { super(props); this.state = { anchorEl: null }; } handleClick(event) { console.log(event); console.log(this); this.setState({ anchorEl: event.currentTarget, }); } handleClose() { console.log(342); this.setState({ anchorEl: null, }); } render() { return ( <AppBar position="static"> <Toolbar> <IconButton edge="start" color="inherit" aria-label="menu"> <DashboardIcon /> </IconButton> <Button color="inherit"> <Link to="/home" className="menu-link"> 首页 </Link> </Button> <Button color="inherit" OnClick={this.handleClick}> <Link to="/home" className="menu-link"> 内容管理 </Link> </Button> <Menu id="simple-menu" anchorEl={this.anchorEl} keepMounted open={Boolean(this.anchorEl)} OnClose={this.handleClose} > <MenuItem OnClick={this.handleClose}>Profile</MenuItem> <MenuItem OnClick={this.handleClose}>My account</MenuItem> <MenuItem OnClick={this.handleClose}>Logout</MenuItem> </Menu> </Toolbar> </AppBar> ); } } export default Header; 代码如上,Header里面的 handleClick 函数,this 提示undefined,我之前按照官方示例学的时候,onClick 绑定的class函数的this是有的,可以使用this.setState的,怎么到了这里就不行了呢?
1 shenyu1996 2020-01-01 19:37:02 +08:00 via Android https://react.docschina.org/docs/handling-events.html 绑定 this 或者箭头函数 |
2 Justin13 2020-01-01 19:40:09 +08:00 via Android 上箭头函数,这是 js 中的 this 问题,和 react 没有关系 |
3 dyllen OP @Justin13 @shenyu1996 知道了,感谢。 |
4 newbieRenew 2020-01-01 21:15:52 +08:00 via iPhone 用 function 吧,hook,箭头函数。少了很多 this 烦恼。 |