react+typescript给state和props定义指定类型

简介: react+typescript给state和props定义指定类型


背景

在react+typescript编写代码的时候,提示类型“Readonly<{}>”上不存在属性“xxx”

这是因为state和props没有定义类型导致的。

解决办法

  • 法一
    给state和props都定义指定类型
import React, { Component } from 'react';
type StateType = {
  username: string;
};
type propType = {
  name: string;
  [propName: string]: any;
};
interface User {
  state: StateType;
  props:propType
}
class User extends Component {
  constructor(props: any) {
    super(props);
    this.state = {
      username: '李四'
    }
  }
  render() {
    return (
      <div>
        <div className="title">用户名{this.state.username}</div>
        <div className="title">用户名{this.props.name}</div>
      </div>
    )
  }
}
export default User

法二:

React.Component改成React.Component<any, any>

但是不推荐这样,因为这样就失去了ts检测类型的意义

import React, { Component } from 'react';
export default class User extends Component<any, any> {
  constructor(props: any) {
    super(props);
    console.log(props);
    this.state = {
      username: '李四'
    }
  }
  render() {
    return (
      <div>
        <div className="title">用户名{this.state.username}</div>
        <div className="title">用户名{this.props.name}</div>
      </div>
    )
  }
}

文章参考

https://www.cnblogs.com/llcdbk/p/13029996.html

目录
相关文章
|
10月前
|
前端开发 JavaScript 安全
除了高阶组件和render props,还有哪些在 React 中实现代码复用的方法?
除了高阶组件和render props,还有哪些在 React 中实现代码复用的方法?
402 62
|
前端开发 JavaScript
学习react基础(3)_setState、state、jsx、使用ref的几种形式
本文探讨了React中this.setState和this.state的区别,以及React的核心概念,包括核心库的使用、JSX语法、类与函数组件的区别、事件处理和ref的使用。
263 3
学习react基础(3)_setState、state、jsx、使用ref的几种形式
|
前端开发
如何在React Router中定义404错误页面组件?
如何在React Router中定义404错误页面组件?
357 57
|
JavaScript 前端开发 安全
使用 TypeScript 加强 React 组件的类型安全
【10月更文挑战第1天】使用 TypeScript 加强 React 组件的类型安全
355 106
|
JavaScript 前端开发
TypeScript 定义同步方法
本文详细介绍了在TypeScript中定义同步方法的多种方式,包括使用类、接口、泛型和复杂的数据操作示例。通过理解这些方法,你可以在实际项目中有效地组织和管理你的代码,提高代码的可读性和维护性。
235 19
|
前端开发 安全
如何使用类型参数来创建 React 泛型组件?
通过以上步骤,就可以使用类型参数来创建灵活、可复用且类型安全的React泛型组件,以满足不同的数据类型和业务需求。
|
前端开发
如何定义和使用React泛型组件
通过合理地定义和使用React泛型组件,可以提高代码的复用性和可维护性,同时增强类型安全性,使React应用程序的开发更加高效和可靠。
448 65
|
前端开发
React添加路径别名alias、接受props默认值、并二次封装antd中Modal组件与使用
本文介绍了在React项目中如何添加路径别名alias以简化模块引入路径,设置组件props的默认值,以及如何二次封装Ant Design的Modal组件。文章还提供了具体的代码示例,包括配置Webpack的alias、设置defaultProps以及封装Modal组件的步骤和方法。
392 1
React添加路径别名alias、接受props默认值、并二次封装antd中Modal组件与使用
|
前端开发 JavaScript
手敲Webpack 5:React + TypeScript项目脚手架搭建实践
手敲Webpack 5:React + TypeScript项目脚手架搭建实践
|
前端开发 JavaScript 调度
React 组件状态(State)
10月更文挑战第8天
273 1