当前位置: 首页 > 编程笔记 >

在React.js中使用原型

吴高畅
2023-03-14
本文向大家介绍在React.js中使用原型,包括了在React.js中使用原型的使用技巧和注意事项,需要的朋友参考一下

道具的使用可确保在组件上接收道具的类型安全,还有助于进行正确的计算。

示例 -如果我们以字符串形式接收名称,以数字形式接收年龄,则应以相同的类型接收它。如果我们以字符串形式接收年龄,则可能导致计算错误。

要使用原型,我们必须安装以下软件包。

npm install –save prop-types

这个包由React Team提供。要在组件上使用它,我们将首先导入它

import PropType from ‘prop-types’;

我们可以在任何类型的组件(有状态或无状态)上使用它。

在导出组件的末尾,我们将其写为-

Player.propTypes={};
Note the propType on name of component as shown above.
Player.propTypes={
   age:PropType.number,
   name:PropType.string
}

使用JavaScript对象,我们可以指定prop的名称及其有效的数据类型。如果传递的数据类型不正确,我们将在浏览器控制台中收到警告。

可用的道具类型为-

  • any => 它可以是任何类型

  • Boolean

  • String

  • Number

  • func => means function

  • array

  • object

  • symbol

如果道具类型不匹配,则在浏览器控制台中显示警告消息将有助于开发人员更正错误。

尽管我们可以在每个组件上使用proptype,但是如果该组件将由其他开发人员使用并且应该大量使用数据类型,则应使用proptype。

使用引用

我们可以通过使用ref来控制dom元素。

<input value={this.props.name}
ref={(myInput)=>{this.testInput=myInput}}/>
we can use it on componentDidMount
componentDidMount(){
   this.testInput.focus();
}

使用Ref的替代最新方法

Inside constructor we can create a ref
constructor(props){
   super(props);
   this.testInputRef=React.createRef();
}

我们可以在输入元素上使用创建的ref,如下所示:

<input value={this.props.name}
ref={this.testInputRef }/>

如何在componentDidMount中访问这种新方式

componentDidMount(){
   this.testInputRef.current.focus();
}

我们必须使用ref元素上的当前函数来使它正常工作。

这样我们就可以避免创建匿名函数来创建输入引用。

使用挂钩在功能组件中创建引用

We can create ref using useRef
import React, { useRef} from ‘react’;
const myFunction=(props)=>{
   const inputRef = useRef(null);//我们可以使用其构造函数为ref提供一些值
}

我们可以使用类似于之前在有状态组件中创建的ref。

请注意,此引用不应立即使用,因为届时将无法准备jsx代码。

我们可以在useEffect中使用ref元素。useEffect函数在呈现jsx代码之后运行,因此我们可以确保将ref变量附加到实际元素上并可以使用。

这些引用将像上面一样使用current关键字进行访问。

This.inputRef.current.click();

通过创建ref,我们在组件中保留了一个可变字段以轻松处理它。

请注意,更改ref不会触发重新渲染。有一个useCallback方法可以通知更改并异步工作。

 类似资料:
  • 本文向大家介绍在React.js中使用useContext,包括了在React.js中使用useContext的使用技巧和注意事项,需要的朋友参考一下 useContext钩子允许在不使用redux的情况下将数据传递给子元素。 useContext是react中的一个命名导出,因此我们可以导入如下的功能组件- 如果我们只需要将数据传递给child元素,则它是Redux的简单替代方案。 创建上下文的

  • 我有一个安装了ReactJS的NetCore2应用程序。 null VS代码抛出一个错误,告诉我异步只适用于。ts文件。另外,如果我在任何其他函数中使用await,我将得到一个错误,比如。 据我所知,async/await不仅仅是TS...(或者我错了?)。 谢了!

  • 本文向大家介绍在React.js中使用useState钩子,包括了在React.js中使用useState钩子的使用技巧和注意事项,需要的朋友参考一下 钩子允许功能组件在反应中获得基于类的组件中可用的特性,从而使它们更加强大。 useState,我们将从react导入。从'react'导入{useState}; 这有助于我们为功能组件创建局部状态变量,并提供更新该变量的方法。 类中的状态是一个对象

  • 本文向大家介绍在React.js功能组件中使用useEffect(),包括了在React.js功能组件中使用useEffect()的使用技巧和注意事项,需要的朋友参考一下 React钩子useEffect有助于在React的功能组件中添加componentDidUpdate和componentDidMount组合生命周期。 到目前为止,我们知道我们只能在有状态组件中添加生命周期方法。 要使用它,我

  • 问题内容: 以下 如何在React中与axios一起使用async / await 我试图在React.js应用程序中使用Async / Await向我的服务器发出一个简单的get请求。服务器加载一个简单的JSON ,看起来像这样 JSON格式 我可以使用简单的jquery ajax get方法将数据获取到我的React App。但是,我想利用axios库和Async / Await来遵循ES7标

  • 问题内容: 我从React.js开始,我想做一个简单的表格,但是在文档中我找到了两种方法。 在第一种是使用 参考文献 : 和第二个是使用 状态 内的阵营组分: 如果存在,我看不到这两种选择的优缺点。谢谢。 问题答案: 简短版本:避免引用。 它们不利于可维护性,并且失去了所见即所得模型渲染所提供的许多简单性。 您有一个表格。您需要添加一个按钮来重置表单。 参考: 操作DOM render描述了3分钟