react踩坑之函数名(){}与函数名=()=>{}的区别

2023-05-16

在React.Component组件中,函数不同的写法有什么区别。最近在看书,照着写敲代码,敲完后发现与书上效果不一样。找了很久才找到区别。打这个小坑记录下来,这个应该新手比较容易犯的错。

结论:
函数名(){} 不得直接使用this关键字调用内部方法
函数名=()=>{} 可以使用this关键字调用内部方法

比如下面
renderInputMethodEditor = () => {}如果写成renderInputMethodEditor(){}就会发现this关键字无法调用的情况。

错误代码

import React from 'react';
export default class App extends React.Component {
	state = {
		isInputFocused: false,
		inputMethod: INPUT_METHOD.NONE,
	};
	handlePressButton = () => {
		alert('world');
	}
	renderInputMethodEditor(){
		return (
			<View style={styles.inputMethodEditor}>
				<Button title='world' onPress={this.handlePressButton} />
			</View>
		)
	}
	render() {
		return (
			<View>
				...</View>
		);
	}
}

正确代码

import React from 'react';
export default class App extends React.Component {
	state = {
		isInputFocused: false,
		inputMethod: INPUT_METHOD.NONE,
	};
	handlePressButton = () => {
		alert('world');
	}
	renderInputMethodEditor = () => {
		return (
			<View style={styles.inputMethodEditor}>
				<Button title='world' onPress={this.handlePressButton} />
			</View>
		)
	}
	render() {
		return (
			<View>
				...</View>
		);
	}
}

理解

首先声明这只是我个人的理解,不一定是对的。我站在java的角度去思考这个问题的。

renderInputMethodEditor = () => {
		return (
			<View style={styles.inputMethodEditor}>
				<Button title='world' onPress={this.handlePressButton} />
			</View>
		)
}

这种写法可以理解成在Class中有个
renderInputMethodEditor属性,而这个属性的值是一个function(),可以理解中java中的实例中的方法。就是类实例化后才可以调用的对象方法。

renderInputMethodEditor(){
		return (
			<View style={styles.inputMethodEditor}>
				<Button title='world' onPress={this.handlePressButton} />
			</View>
		)
}

这种写法是否可以解决成java中的静态方法(static方法),不用实例化就可以调用,但是无法调用this关键字。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

react踩坑之函数名(){}与函数名=()=>{}的区别 的相关文章

  • React + Umi + Dva + Antd 简述 及创建项目过程简述

    React 你的第一个组件 React React是前端三大主流框架之一 你可以在React里传递多种类型的参数 如声明代码 帮助你渲染出UI 也可以是静态的HTML DOM元素 也可以传递动态变量 甚至是可交互的应用组件 安装react框
  • React仿写网易云音乐项目

    文章目录 一 项目功能说明 二 最终效果 三 文件目录结构说明 四 项目技术栈 五 核心技术 1 配置项目别名 craco craco 2 使用reset css进行 css 重置 3 使用CSS Sprites 精灵图 4 使用 memo
  • 在react项目中,使用craco插件进行mobx配置解决方案

    在使用react项目中 不可避免的要使用蚂蚁金服出品的ant desgin前端UI组件 ant desgin推荐使用 craco 一个对 create react app 进行自定义配置的社区解决方案 对 create react app
  • React学习之扩展浅比较(三十四)

    注意 这玩意也已经被React PureComponent的功能取代了 这里依旧是提一下 主要是React v15的版本中的react with addons js 这些玩意还存在 哎 害人呐 引入 import shallowCompar
  • 【React】路由(详解)

    目录 单页应用程序 SPA 路由 前端路由 后端路由 路由的基本使用 使用步骤 常用组件说明 BrowserRouter和HashRouter的区别 路由的执行过程 默认路由 精确匹配 Switch的使用 重定向路由 嵌套路由 向路由组件传
  • vue 全局组件注册_如何注册vue3全局组件

    vue 全局组件注册 With the new versions of Vue3 out now it s useful to start learning how the new updates will change the way w
  • Ionic3开发教程 - 开发(2)

    Ionic3开发系列教程Ionic3开发教程 环境准备 1 Ionic3开发教程 开发 2 Ionic3开发教程 发布Android版本 3 Ionic3开发教程 发布IOS版本 4 Ionic3开发教程 更新 5 本文中介绍的Ionic3
  • react 使用 scss

    react 使用 scss 日常记录开发中遇到的坑 1 使用 npm install sass loader node sass S 进行安装 2 在页面中直接使用 有时候可以 有时候不行 原因 我个人觉得安装的两个插件本版兼容问题 nod
  • React页面设计初体验

    1 定制路由 export default login path login name login component layouts BlankLayout routes path login component Login Index
  • 三分钟实现一个react-router-dom5.0的路由拦截(导航守卫)

    不同于vue 通过在路由里设置meta元字符实现路由拦截 在使用 Vue 框架提供了路由守卫功能 用来在进入某个路有前进行一些校验工作 如果校验失败 就跳转到 404 或者登陆页面 比如 Vue 中的 beforeEnter 函数 rout
  • React路由懒加载的实现

    React lazy 通过引入lazy Suspense两个方法实现路由懒加载 首先 我们需要在组件中引入lazy Suspense这两个方法 然后我们需要通过Suspense组件 包裹着注册路由 import React Componen
  • react组件状态同步-状态提升

    假设定义组件TemperatureInputSon import React from react class TemperatureInputSon extends React Component constructor props su
  • Notion笔记搭建博客网站 - NotionNext

    NotionNext是什么 NotionNext是我在Github上开源的基于Next js框架开发的博客生成器 目的是帮助写作爱好者们通过Notion笔记快速搭建一个独立站 从而专注于写作 而不需要操心网站的维护 它将您的Notion笔记
  • react和react jsx基础

    本文是个人学习笔记 例子都是来自React Native官网 之前不是做前端的 没有使用过react 要学习react native做混合开发 react 包括react jsx还是得补补 react和react jsx react是一个j
  • React官方文档--Lifting State Up

    Lifting State Up 如果 几个组件需要同时影响并且修改同一个数据 我们建议将这个共享状态进行提升 给他们最近的共同祖先 在这个部分 我们将要创建一个温度计算器来判断水会不会在给定温度下沸腾 我们将从一个叫做BoilingVer
  • 【react】回调函数形式的ref

    回调函数有3个特点 是我定义的函数 我没有调用这个函数 在我没有调用的情况下这个函数自己执行了 ref绑定一个箭头函数作为回调函数 可以输出以下这段看下 ref绑定的箭头函数是会自己执行的 class Demo extends React
  • React、Vue2.x、Vue3.0的diff算法

    前言 本文章不讲解 vDom 实现 mount 挂载 以及 render 函数 只讨论三种 diff 算法 VNode 类型不考虑 component functional component Fragment Teleport 只考虑 E
  • react之封装有无Token(路由权限控制)的高阶组件

    TOC 前景 有些路由页面内的内容信息比较敏感 如果用户没有经过登录获取到有效Token 是没有权限跳转的 根据Token的有 无控制当前路由是否可以跳转就是路由的权限控制 技术方案 实现步骤 1 在 components 目录中 创建 A
  • 自定义hooks

    自定义传参hooks 把大多数的通用代码 或者props 抽成一个hooks 用hooks实现上下文 就不用再一一传参了 实现原理 主要是通过createContext useContext 生产 消费者模式 用于大量props一层一层传参
  • 如何提高React组件的渲染效率的?在React中如何避免不必要的render?

    面试官 说说你是如何提高组件的渲染效率的 在React中如何避免不必要的render 一 是什么 react 基于虚拟 DOM 和高效 Diff 算法的完美配合 实现了对 DOM 最小粒度的更新 大多数情况下 React 对 DOM 的渲染

随机推荐

  • 无限渗透实战(2)--绕过认证上校园网

    校园网大家都熟悉 一般都是开放的 xff0c 然后连接之后有个登录页面 xff0c 认证之后就可以上网了 xff0c 那么我们怎么绕过认证直接上网 首先还是开始监听周围的ap 可以看到有许多的校园网 那么我们就需要开始监听周围的校园网 xf
  • spring boot jar自定义端口启动

    java jar spring zs 1 0 jar server port span class token operator 61 span 9090
  • CentOS7中安装五笔输入法

    使用vnc远程了一点服务 xff0c 远程维护 GNOME默认自带的是ibus输入平台 默认有一个拼音输入法 但是我日常使用五笔打拼音还是不太习惯 xff0c 那就安装个五笔输入吧 相关阅读 xff1a Centos7安装和配置VNC服务器
  • CentOS7下vscode无响应

    原因分析 xff1a 我以前安装vscode是可以正常使用的啊 为什么现在不行了呢 xff1f 我怀疑会不会是新版的兼容性不行 我安装的是code 1 58 2 1626302881 el8 x86 64 rpm 后来在看到这篇文章 Cen
  • Bad owner or permissions on ~/.ssh/config

    ssh运行报错如下 xff1a Bad owner or permissions on ssh config 解决办法 span class token function chmod span 600 ssh config 参考 https
  • java.lang.NoClassDefFoundError: org/owasp/encoder/Encode

    一个老的spring boot项目中使用到了shiro xff0c 存在安全漏洞 xff0c 由于源码丢失 xff0c 只好采用解压jar升级里面shiro的jar来解决了 但是升级以后遇到报错如下 报错信息 Caused by java
  • A VNC server is already running as :1

    现象 VNC服务使用 Centos7安装和配置VNC服务器 GNOME篇 https blog csdn net lxyoucan article details 113179208 中的配置方法 一开始服务都是正常的 xff0c 在我多次
  • CentOS7+IntellJ IDEA 中文输入问题

    心血来潮在CentOS7中搭建了java开发环境 xff0c 发现在IDEA中输入中文存在问题 中文输入法只能输入1到2个中文 xff0c 后面都是英文了 xff0c 那就想办法解决一下吧 xff01 环境 我的环境信息如下 xff1a 项
  • CentOS7安装CMakev3.21.0

    yum 安装的CMake版本是 2 8 12 2 xff0c 比较旧无法使用 那就来升级一下吧 cmake span class token keyword span CMake Error at CMakeLists txt 1 span
  • CentOS7+VNC+Openbox+Fcitx

    文章目录 简介VNCopenboxFcitx 实战环境信息安装与自动配置脚本创建用户开启 VNC服务 客户端连接VNC实现远程控制假如vnc中输入法切不出来参考 简介 VNC VNC xff08 Virtual Network Comput
  • vnc学习笔记合集

    文章目录 CentOS7 43 VNC 43 Openbox 43 FcitxCentOS中VNC常用命令Centos7安装和配置VNC服务器 GNOME篇Centos7安装和配置VNC服务器 Xfce篇Centos7安装和配置VNC服务器
  • linux_pwn(3)--Chunk Extend and Overlapping&&roarctf_2019_easy_pwn

    文章目录 What is Chunk Extend and Overlappingpwn题思路例题保护机制add函数show函数delete函数edit函数 开始做题准备框架调试覆盖后面一个块的大小释放堆块free验证机制尝试修改堆块开始泄
  • 2021CentOS7系统Gnome3桌面使用Fcitx

    前言 CentOS系统大多是用于服务器上 xff0c 当作桌面系统使用的比较少数了 就算偶而使用CentOS当作桌面系统使用 xff0c Gnome3桌面自带的输入法框架ibus简单使用已经够用了 最近在CentOS7当作桌面系统当临时开发
  • CentOS7安装搜狗输入法

    搜狗拼音输入法是2006年6月由搜狐公司推出的一款汉语拼音输入法 搜狗输入法从一开始偏向于词语输入特性 xff0c 发展到后来配备云输入功能的以整句输入为优势的输入法 xff0c 是中国大陆市场主流的汉语拼音输入法 根据极光大数据的 201
  • CentOS7一键安装搜狗输入法

    自动档 span class token function sh span c span class token string 34 span class token variable span class token variable s
  • CentOS7一键开启VNC服务脚本

    最近在研究舒适 xff0c 小巧 xff0c 好用的图形界面远程控制 输入法这块卡了我很久时间 xff0c 经过一周的努力 xff0c 查资料无数 xff0c 终于打造出一套可以令自己满意的远程方案了 我的工作中接触的远程Linux服务系统
  • shell用户输入数字加法操作

    用户输入2个数字进行加法操作 span class token builtin class name echo span span class token string 34 请输入数字1 34 span span class token
  • 浅谈linux文件权限

    权限介绍 访问权限 读取 xff08 r xff09 xff1a 允许查看文件内容 xff0c 显示目录列表写入 xff08 w xff09 xff1a 允许修改文件内容 xff0c 允许在目录中新建 删除 移动文件或者子目录可执行 xff
  • Linux实用脚本分享

    源码 xff1a https gitee com lxyoucan tools CentOS7专用脚本 因为我平时接触的大部分机器都是CentOS7 这里的脚本都是针对CentOS7开发的 虽然个人比较喜欢新的软件 xff0c 喜欢arch
  • react踩坑之函数名(){}与函数名=()=>{}的区别

    在React Component组件中 xff0c 函数不同的写法有什么区别 最近在看书 xff0c 照着写敲代码 xff0c 敲完后发现与书上效果不一样 找了很久才找到区别 打这个小坑记录下来 xff0c 这个应该新手比较容易犯的错 结论