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 1
https://react.docschina.org/docs/handling-events.html 绑定 this 或者箭头函数
|
2
Justin13 2020-01-01 19:40:09 +08:00 via Android 1
上箭头函数,这是 js 中的 this 问题,和 react 没有关系
|
3
dyllen OP @Justin13 @shenyu1996 知道了,感谢。
|
4
newbieRenew 2020-01-01 21:15:52 +08:00 via iPhone
用 function 吧,hook,箭头函数。少了很多 this 烦恼。
|