zoukankan      html  css  js  c++  java
  • tsx 编写react 遇见类型“Readonly<{}>”上不存在属性XXX解决办法

    这样的问题是TS语法类型检测的时候会报错,这时候可以给state个props生命类型,问题解决,代码如下:

    import React from "react";
    type StateType = {
      name: string;
      number: number;
    };
    type propType = {
        name: string;
        number: number;
      };
    interface Test1 {
      state: StateType;
      props:propType
    }
    class Test1 extends React.Component {
      constructor(props) {
        super(props);
        this.state = {
          name: "",
          number: 2
        };
      }
    
      render() {
        console.log(this.props.name);
        return (
          <div>
            <div>
              <label htmlFor="">单号</label>
              <input
                type="text"
                value={this.state.name}
                onChange={e => this.setState({ name: e.target.value })}
              />
            </div>
            <div>
              <label htmlFor="">创建用户</label>
              <input
                type="text"
                value={this.state.number}
                onChange={e => this.setState({ number: e.target.value })}
              />
            </div>
            <div></div>
          </div>
        );
      }
    }
    
    export default Test1;

    这个

    propType和
    StateType 
    就是声明类型的地方,如此问题解决,网上还有一种方案是把
    React.Component改成
     React.Component<any, any>
    但是这样一来对state和props的类型检测就失去意义了,所以不太建议使用
    但是其实还能这么写,看一下TS的解释会发现
    React.Component<any, any>
     这里面的第一个any可以是props的类型,第二个any可以是state的类型,即:
    class Test1 extends React.Component<propType,StateType>
    问题一样可以解决
     
  • 相关阅读:
    CSS流式布局 仿京东
    Flex 实现仿 携程网 手机端布局
    JS 实现 微信随机发红包思路
    记录gradle 使用笔记
    springBoot入门
    支付宝当面付扫码支付功能详解
    微信验证以及登录流程
    Nginx配置文件详细说明
    crontab定时任务打包备份文件并删除过期文件
    关于List比较好玩的操作
  • 原文地址:https://www.cnblogs.com/llcdbk/p/13029996.html
Copyright © 2011-2022 走看看