react中为什么可以直接在组件中写箭头函数

发布于 2022-09-04 15:15:12 字数 694 浏览 10 评论 0

看到antd mobile的一个demo如下:

import { Drawer, List, NavBar } from 'antd-mobile';

class App1 extends React.Component {
  state = {
    open: false,
    position: 'left',
  }
  onOpenChange = (...args) => {
    console.log(args);
    this.setState({ open: !this.state.open });
  }
  render() {
    return (
        ...
    )
  }
}

ReactDOM.render(<App1 />, mountNode);

为什么原型方法onOpenChange可以写成箭头函数的形式?这个不是只是一个函数吗?按道理应该是类似这样的

onOpenChange : function(){}

或者这样的:

onOpenChange(){}

应该是键值对的形式才对啊!!!

是不是其实这样就不是原型方法了(就是不放在prototype上了),而是实例方法了?

这种写法到底是什么?它有什么特别的地方?它存在的意义是什么?它有哪些应用场景?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

短叹 2022-09-11 15:15:13

这是 ES7 class 的新语法,可以直接给类的属性或方法直接赋值。

岁月静好 2022-09-11 15:15:13

JS新的语法知识,所以可以可以用

onOpenChange = (...args) => {
    console.log(args);
    this.setState({ open: !this.state.open });
  }

相当于

onOpenChange = function(...args){
    console.log(args);
    this.setState({ open: !this.state.open });
  }
樱花落人离去 2022-09-11 15:15:13

箭头函数除了写起来方便外 还能绑定当前作用域

你这个函数一看就是用来绑定给事件的函数
在react中用es5 class 建立的组件需要手动绑定作用域,用 createClass的则不用

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文