当前位置: 首页 > news >正文

React+TypeScript入门

本文面向读者:具有一定的javascript基础的开发人员

参考资料如下:

1.关于初始化环境配置请参见这位大佬的文章

2.React中文文档

相关文章
React+TypeScript入门
TypeScript+React入门-----引入css
React+TypeScript入门-----BrowserRouter
Q:什么是TypeScript?
A:TypeScript是JavaScript的超集,它可以编译成纯JavaScript.

Q:为什要使用TypeScript?
A:TypeScript有很多好处,说都说不完哈哈哈哈哈哈哈....

Q:TypeScript是如何调用React.js的?
A:TypeScript是通过react.d.ts声明文件媒介来调用React.js的,
在TypeScript中如果要调用.js模块,需要对应的.d.ts才可以
以下是关于使用TypeScript的入门介绍了
首先根据参考文章配置好一个简单的开发环境,配置完成之后文件目录结构如下
图片描述

首先我们写一个简单的示例

import * as React from 'react';
import * as ReactDOM from 'react-dom';
class Demo {
    name:string = "";
    constructor(){
        this.name = "Hello World";
    }
}
const render = () => {

    ReactDOM.render(
        <div>           
            {new Demo().name}
        </div>,
        document.querySelector('#app')
    )
}
render(); 

打开浏览器localhost:8080就可以看到Hello World了

接下来创建一个不带任何参数和状态的组件User

class User extends React.Component{
    render(){
        return <div>我是User组件</div>
    };
}

const render = () => {
    ReactDOM.render(
        <div>           
            {new Demo().name}
            <User />
        </div>,
        document.querySelector('#app')
    )
}

只需要很简单的几行代码就可以搞定

接下给组件添加传递props,和JavaScript不同的是,现在需要通过参数的形式显示传递props,组件才可以获取到。state也是如此
User继承自React.Component,React.Component是个泛型,接收三个参数P={},S={},SS=any,其中P代表props,S代表state,
SS我还没有搞清楚什么意思

interface UserState{
    createTime:Date
}
interface UserProp{
    name:string
}
class User extends React.Component<UserProp,UserState>{
    constructor(props:UserProp){
        super(props);
        this.state = {createTime: new Date()};        
    }
    render(){
        return <div>
                <p>我是User组件</p>
                <p>我的名字是{this.props.name}</p>
                <p>我的创建时间是{this.state.createTime.toString()}</p>                                
               </div>   
    };
}

const render = () => {
    ReactDOM.render(
        <div>           
            {new Demo().name}
            <User name="李雷"/>
            <User name="韩梅梅"/>
        </div>,
        document.querySelector('#app')
    )
}

如果你使用的是vscode,可以将鼠标移到React.Component上就会看到
图片描述

入门就写先到这里吧

相关文章:

  • MySql行转列、列转行
  • @ModelAttribute注解使用
  • docker容器内的网络抓包
  • 【linux】linux重启tomcat + 实时查看tomcat启动日志
  • JavaScript基础——基本概念
  • 一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • Innodb之全局共享内存
  • sql 开窗函数
  • 我的友情链接
  • 实现菜单下拉伸展折叠效果demo
  • Android中的树状(tree)列表
  • 基于MVC思想实现一个简单的贪吃蛇小游戏
  • Device Tree Usage 【转】
  • 从容器到云原生 – 极致弹性
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • C# 免费离线人脸识别 2.0 Demo
  • CentOS 7 防火墙操作
  • css系列之关于字体的事
  • ESLint简单操作
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Java面向对象及其三大特征
  • Java知识点总结(JavaIO-打印流)
  • Meteor的表单提交:Form
  • oschina
  • socket.io+express实现聊天室的思考(三)
  • vue2.0项目引入element-ui
  • 编写高质量JavaScript代码之并发
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 记一次删除Git记录中的大文件的过程
  • 前端面试总结(at, md)
  • 设计模式(12)迭代器模式(讲解+应用)
  • 温故知新之javascript面向对象
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 一天一个设计模式之JS实现——适配器模式
  • 【云吞铺子】性能抖动剖析(二)
  • Prometheus VS InfluxDB
  • #ifdef 的技巧用法
  • (04)odoo视图操作
  • (1) caustics\
  • (1)常见O(n^2)排序算法解析
  • (6)STL算法之转换
  • (二)Eureka服务搭建,服务注册,服务发现
  • (分布式缓存)Redis持久化
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (排序详解之 堆排序)
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)用.Net的File控件上传文件的解决方案
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET CLR Hosting 简介
  • .Net Core缓存组件(MemoryCache)源码解析