首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TypeScript 函数中的 this 参数

从 TypeScript 2.0 开始,在函数和方法中我们可以声明 this 的类型,实际使用起来也很简单,比如: function sayHello(this: void) { // this:...void:表示在函数体内不允许使用this } 在上面的 sayHello 函数中,this 参数是伪参数,它位于函数参数列表的第一位。...在 getArea 方法中我们没有使用 this 参数,此时 this 的类型是 this,如下图所示: ?...Rectangle 长方形类不同,在 getArea 方法中,我们使用了 this 参数,之后 this 的类型是 Rectangle 类型,如下图所示: ?...在 Rectangle 长方形类 getArea 方法中的 this 入参只是作为一个形式上的参数,供 TypeScript 做静态检查时使用,编译后并不会生成实际的入参。

7.8K10

TypeScript 2.8下的终极React组件模式

除了有类型的JS,我也非常喜欢React库,所以当把React和Typescript 结合在一起后,对我来说就像置身天堂一样:)。整个应用程序和虚拟DOM中的完整的类型安全,是非常奇妙和开心的。...所以这篇文章说是关于什么的呢?在互联网上有各种关于React组件模式的文章,但没有介绍如何将这些模式应用到Typescript中。...在 @types/react中已经预定义一个类型 type SFC,它也是类型 interfaceStatelessComponent的一个别名,此外,它已经有预定义的 children和其他...整个容器组件/有状态组件的实现: 我们的容器组件还没有任何Props API,所以我们需要将 Compoent组件的第一个泛型参数定义为 Object(因为在React中 props永远是对象 {}),...但随着 TypeScript 2.8中新加入的功能,我们几乎可以在所有的 React 组件模式中编写类型安全的组件。

6.7K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用 TypeScript 的 React 组件点表示法

    Flex.Item 组件定义和逻辑是否与 Flex 在同一个文件中、在同级文件中或在嵌套目录中都没有关系。底层实现和文件结构可以随时更改,因为唯一的公共合约是 Flex 的导出。...// ... } } 或者设计系统中可能具有多个构建块的稍微复杂的组件。...高阶组件 在顶级组件上使用更高阶的组件(例如从 react-redux 连接)可能会很棘手。...这很好,但唯一的缺点是在 React Devtools 中,它会显示为 NeverCallThisComponentDirectly,这可能会非常混乱,因为它从未被直接调用过。...函数组件 到目前为止,所有示例都使用类组件,但同样的方法也可以用于函数组件。但是,它需要在类型声明中显式声明子组件。

    1.8K30

    React组件设计实践总结03 - 样式的管理

    CSS 加载完毕, 但是很难清晰地定义某个特定组件依赖于某段特定的 CSS 代码; 另一方面, 全局性导致你的样式可能被别的组件依赖(某种程度的细节耦合), 你不能随便修改你的样式, 以免破坏其他页面或组件的样式...: React.CSSProperties; } 这两个属性应该是每个展示型组件应该暴露的 props, 其他嵌套元素也要考虑支持配置样式, 例如 footerClassName, footerStyle...由于 styled-components 的类名是自动生成的, 所以不能直接在选择器中声明他们, 但可以在模板字符串中引用其他组件: const Icon = styled.svg` flex:...点击这里了解更多, 另外在这里了解如何在 Typescript 中声明 theme 类型 8....有兴趣的读者可以看这篇文章CSS Modules 详解及 React 中实践.

    7.1K20

    1500行TypeScript代码在React中实现组件keep-alive

    后端也是如此 Vue.js中的keep-alive使用: 在Vue.js中,尤大大是这样定义的: image.png keep-alive主要用于保留组件状态或避免重新渲染 基础使用: 的一个组件, image.png 仔细看上面的注释内容,再看当前body中多出来的div image.png 那么他们是不是对应上了呢?...react-component-keepalive 有两个主要的组件 和 ; 负责保存组件的缓存,并在处理之前通过 React.createPortal...缓存的组件必须放在 中, 会把在应用程序外面渲染的组件挂载到真正需要显示的位置。...Coment组件的注释,来查找到对应的需要渲染真实节点再进行替换,而这些节点都是缓存在内存中,DOM操作速度远比框架对比后渲染快。

    2.5K20

    element-ui中upload组件如何传递文件及其他参数

    首先在element-ui的官网里有对upload组件的简单的介绍 1 <el-upload 2 class="upload-demo" 3 action="https://jsonplaceholder.typicode.com...class="el-upload__tip">只能上传jpg/png文件,且不超过500kb 9 其实upload就是对input type=”file”做了几层样式封装...一 action url 我第一个不理解的就是action中的url,我后台使用的是PHP语言,根据我之后的理解,这个url其实就是你PHP使用的上传的函数,就和form中的action一样,不一样的是我找了好久也没发现是否能修改默认的...post传递方式 二 文件接收的同时,传递其他参数 方案一 url传参 对PHP提供的url进行传参,这是最直接能想到的方式,但是因为action中是post方式的,而PHP后台我使用的restful方式的...,默认参数是当前文件,只要能传递这个文件也能实现效果 要传递这个方法就需要new一个formdata对象,然后对这个对象追加key和value,类似于postman测试时那样 具体网上有人给的例子,差不多如下

    2.2K30

    React中的高阶组件

    React中的高阶组件 高阶组件HOC即Higher Order Component是React中用于复用组件逻辑的一种高级技巧,HOC自身不是React API的一部分,它是一种基于React的组合特性而形成的设计模式...{...this.props} {...newProps} />; } } } 或者我们的目的是将其使用其他组件包裹起来用以达成布局或者是样式的目的...在一些情况下,我们可能需要为高阶属性传入一些参数,那我们就可以通过柯里化的形式传入参数,配合高阶组件可以完成对组件的类似于闭包的操作。...注意 不要改变原始组件 不要试图在HOC中修改组件原型,或以其他方式改变它。...修改传入组件的HOC是一种糟糕的抽象方式,调用者必须知道他们是如何实现的,以避免与其他HOC发生冲突。HOC不应该修改传入组件,而应该使用组合的方式,通过将组件包装在容器组件中实现功能。

    3.8K10

    3、React组件中的this

    React组件的this是什么 通过编写一个简单组件,并渲染出来,分别打印出自定义函数和render中的this: import React from 'react'; const STR = '被调用...这段代码形象的验证了,JavaScript函数中的this不是在函数声明的时候,而是在函数运行的时候定义的; 同样,React组件也遵循JavaScript的这种特性,所以组件方法的‘调用者’不同会导致...1. render()以及componentDIdMount()、componentDIdUpdate()等其他生命周期函数中的this都是组件实例; 2. this.handler()的调用者,为render...,可以自动绑定所用的方法,使得其this指向组件的实例化对象,但是其他JavaScript类并没有这种特性; 所以React团队决定不再React组件类中实现自动绑定,把上下文转换的自由权交给开发者;...,即onClick={this.handler}打印出来的为组件实例; 总结: React组件生命周期函数中的this指向组件实例; 自定义组件方法的this会因调用者不同而不同; 为了在组件的自定义方法中获取组件实例

    2.9K10

    React中的纯组件

    React中的纯组件 React提供了一种基于浅比较模式来确定是否应该重新渲染组件的类React.PureComponent,通常只需要继承React.PureComponent就可以定义一个纯组件。...同时在checkShouldComponentUpdate函数中有一段这样的逻辑,在函数名上就能看出是对传入的参数进行了一次浅比较,因此实际上PureReactComponent组件和ReactComponent...组件的区别就是React.PureComponent中以浅层对比prop和state的方式来实现了shouldComponentUpdate()函数。...需要注意的是,React.PureComponent中的shouldComponentUpdate()仅作对象的浅层比较。...此外React.PureComponent中的shouldComponentUpdate()将跳过所有子组件树的prop更新,因此需要确保所有子组件也都是纯的组件。

    2.5K10

    React 中的 dumb 组件和 smart 组件

    原文:https://medium.com/@thejasonfile/dumb-components-and-smart-components-e7b33a698d43 当你开始起步学习 React,...很快就会接触到组件(Component)的概念,正是这一概念让 React 脱颖而出。...这种组件本身只有一个 render() 方法(他们也用不到其他的),并且总是表现为 Javascript 函数。不用维护内部 state,不用知道当收到请求时如何改变其展现的数据 - 无知便是福。...容器组件需要管理自身繁复的生命周期,并负责将数据作为 props,向下传递给展示型组件。 smart 组件是基于类的,并在 constructor() 函数中定义自身的 state。...App extends Component { constructor(props){ super(props); this.state = {pictures : []}; } } 此类组件也经常包含其他回调函数

    2.5K10

    React基础(5)-React中组件的数据-props

    [React学习(5)-React组件中的数据-props.png] 前言 开发一个React应用,更多的是在编写组件,而React组件最小的单位就是React元素,编写组件的最大的好处,就是实现代码的复用...每个定义的React组件应该都是独立存在的模块,组件之外的一切都是外部世界(组件),外部世界(组件)就是通过prop来和组件进行对话数据传递的 在React中,你可以将prop类似于HTML标签元素的属性...this都指向这个实例本身) 通过call,apply调用,this指向call和apply的第一个参数 在React中,给JSX元素,监听绑定一个事件时,你需要手动的绑定this,如果你不进行手动bind...但是官方推荐使用bind绑定,使用bind不仅可以帮我们把事件监听方法中的this绑定到当前的组件实例上 bind后面还还可以设置第二个参数,把与组件相关的东西传给组件的,并在construcor构造器函数中进行初始化绑定...Es6中类声明组件时,在子组件内部接收props的写法上的差异,当使用类class声明一个组件时,定义自己的构造器函数,一定要使用constructor构造器函数,并且设置接收props参数,以及调用super

    6.7K00

    React基础(6)-React中组件的数据-state

    React学习(6)-React组件中的数据-state.png 前言 组件中的state具体是什么?怎么更改state的数据? setState函数分别接收对象以及函数有什么区别?...属性挂载点击事件处理函数(上面是handleBtnClick),来达到控制组件state中的isShow这个状态,从而让文本显示还是隐藏 显示和隐藏是通过添加class层叠样式进行设置,但是控制这个行为切换动作的...要知道的 定义: setState方法是React中React.Component组件所提供的一个内置的方法,当你调用这个setState方法的时候,React会更新组件的状态state,并且重新调用render...,第一个参数prevState(参数名任意),是先前组件状态时的state,而后一个参数newProps(形参名任意)是此次更新被应用时的props,它不是必传的,具体视情况而定 直到现在,知道给setState...中内置提供setState方法修改state的值,并且定义state时,它只能是一个对象,用于存储组件内部特殊的状态 并且大篇幅的讲到setState这个函数需要知道的,可接收两种类型的参数,一个是对象

    6.1K00

    React学习(五)-React中组件的数据-props

    每个定义的React组件应该都是独立存在的模块,组件之外的一切都是外部世界(组件),外部世界(组件)就是通过prop来和组件进行对话数据传递的 在React中,你可以将prop类似于HTML标签元素的属性...如果没有声明,React会默认添加一个空的construcor,并且会自动执行,有且只执行一次,可以将它视为钩子函数(生命周期函数) 这个constructor函数接收props形参数,接收外部组件传值的集合...,this指向该创建的实例化对象(类实例方法里面的this都指向这个实例本身) 通过call,apply调用,this指向call和apply的第一个参数 在React中,给JSX元素,监听绑定一个事件时...但是官方推荐使用bind绑定,使用bind不仅可以帮我们把事件监听方法中的this绑定到当前的组件实例上 bind后面还还可以设置第二个参数,把与组件相关的东西传给组件的,并在construcor构造器函数中进行初始化绑定...Es6中类声明组件时,在子组件内部接收props的写法上的差异,当使用类class声明一个组件时,定义自己的构造器函数,一定要使用constructor构造器函数,并且设置接收props参数,以及调用super

    3.4K30

    React学习(六)-React中组件的数据-state

    如何划分组件的状态数据,进行自我的灵魂拷问,以及props与state的灵魂对比 那么本节就是你想要知道的 React中的state 一个组件最终渲染的数据结果,除了prop还有state,state代表的是当前组件的内部状态...,你可以把组件看成一个'状态机",它是能够随着时间变化的数据,更多的是应当在实现交互时使用,根据状态state的改变呈现不同的UI展示 在React中,因为不能直接修改外部组件传入的prop值 当需要记录组件自身数据变化时...属性挂载点击事件处理函数(上面是handleBtnClick),来达到控制组件state中的isShow这个状态,从而让文本显示还是隐藏 显示和隐藏是通过添加class层叠样式进行设置,但是控制这个行为切换动作的...从上面的代码中,在事件处理函数中调用setState方法时,当setState函数传递的是一个函数时,这个函数接收两个形参数,第一个参数prevState(参数名任意),是先前组件状态时的state,而后一个参数...结语 本文主要讲述了React组件中的数据属性-state,它是组件内部的状态,是一私有的变量,用于记录组件内部状态,由于props不可修改,通过React中内置提供setState方法修改state

    3.6K20

    React 中的受控组件和非受控组件

    在 React 应用中之所以需要受控组件和非受控组件,起因于、 和 这类特定的 DOM 元素默认在 DOM 层中维持状态(用户输入)。...受控组件用来在 React 中也保存该状态,比如同步到渲染输入元素的组件、树结构中的某个父组件,或者一个 flux store 中。 而这种模式可以被扩展至特定的非 DOM 状态相关的用例中。...比如,在最近的一个应用中,我需要创建一个可嵌套的 Collapsible 折叠组件,支持两种操作模式:某些情况下需要使其被外界可控(当应用中的其他区域发生用户交互时扩展开),其他时候它能简单的自己管理状态就可以了...React 中的 Inputs 对于 React 中的 Inputs,是这样工作的: 要创建一个非受控 input,要设置一个 defaultValue 属性。...这种情况下 React 组件会使用底层 DOM 节点并借助节点组件本身的 state 管理该 value。

    2.7K20

    React基础(8)-React中组件的生命周期

    ,做着不同的事情 在React编写组件中,每个组件在网页中都有被创建,更新,删除这么一过程,就像有机的生命体一样 理解生命周期函数对于编写React组件代码是非常重要的 如果你不清楚生命周期,以及生命周期的应用场景...:可以对照这个完整的生命周期图谱的 image.png 组件的装载(Mount):React组件第一次在DOM树中渲染的过程 componentWillMount:组件即将被挂载,在Render方法之前调用...该函数的返回值会作为参数传递给componentDidUpdate componentWillUnmount: 当组件对应的 DOM 元素从页面中删除之前调用 组件的更新(update): 当组件被重新渲染的过程...参数,否则该组件的实例方法无法获取到外部的props值 } 至于constructor在上节当中已经提及过,并不是每个组件都需要定义constructor构造器函数,函数式(无状态)组件就不需要定义构造函数...,进行业务处理,发送网络请求 注意:在处理业务或发送网络请求时,一定要做好条件比较,否则容易造成死循环 组件的卸载 React组件从页面中移除时,在卸载的过程中,只涉及一个生命周期函数componentWillUnmount

    2.2K20

    聊聊React中的权限组件设计

    1背景 权限管理是中后台系统中常见的需求之一。之前做过基于 Vue 的后台管理系统权限控制[1],基本思路就是在一些路由钩子里做权限比对和拦截处理。...最近维护的一个后台系统需要加入权限管理控制,这次技术栈是React,我刚开始是在网上搜索一些React路由权限控制,但是没找到比较好的方案或思路。...这又分为了两部分: 侧边栏菜单 路由权限 在很多人的理解中,前端权限控制就是左侧菜单的可见与否,其实这是不对的。...component代表路由对应的组件: import React, { createElement } from "react" import Loadable from "react-loadable...直接在组件中判断显然不太合适,我们把这部分逻辑抽离出来: /** * 通用权限检查方法 * Common check permissions method * @param { 菜单访问需要的权限

    2.8K11

    React中组件通信的几种方式

    父组件向子组件通信 React数据流动是单向的,父组件向子组件通信也是最常见的;父组件通过props向子组件传递需要的信息 Child.jsx import React from 'react'; import...context是一个全局变量,像是一个大容器,在任何地方都可以访问到,我们可以把要通信的信息放在context上,然后在其他组件中可以随意取到; 但是React官方不建议使用大量context,尽管他可以减少逐层传递...使用context 下面例子中的组件关系: ListItem是List的子组件,List是app的子组件 ListItem.jsx import React, { Component } from 'react...没有嵌套关系的组件通信 使用自定义事件机制 在componentDidMount事件中,如果组件挂载完成,再订阅事件;在组件卸载的时候,在componentWillUnmount事件中取消事件的订阅;...React中组件间通信的几种方式

    2.3K30
    领券