React 入门(4)React+TypeScript

序言

 

设置淘宝镜像

npm config get cache

npm config get prefix

npm config get registry

npm config set registry https://registry.npmjs.org

npm config set registry https://registry.npm.taobao.org

npm

如果没有create-react-app命令行脚手架,可以先下载个

npm install -g create-react-app

然后我们使用其创建一个typescript项目

create-react-app my-app --tempalte typescript

进后项目,启动

npm start

yarn

注意:建议不要放在node的文件夹里,将其放在另一个文件夹,否则会影响node安装的全局命令使用。

yarn config set global-folder "D:\Web\Node\yarn\global"

yarn config set cache-folder "D:\Web\Node\yarn\cache"

创建项目

yarn create react-app react-typescript-app --typescript

yarn

yarn start

集成

less

https://www.cnblogs.com/lyzw-Y/p/11566631.html

webpack

yarn add webpack

ant design

yarn add antd

Redux 

yarn add redux

yarn add react-redux

yarn add redux-thunk  yarn add redux-saga

yarn add redux-logger

yarn add react-router-dom

DvaJS

 

Umi

全局安装umi,版本是2.0.0或以上

yarn global add umi

yarn create umi

umi block list

https://pro.ant.design/docs/block

 

创建页面

umi g page index

umi g page users

启动本地服务器

umi dev

概念

useState

import React, { useState } from 'react'
import './App.css'
 
export default function App() {
  
  const [count, setCount] = useState(0);
  const [name, setName] = useState('Star');
  
  // 调用三次setCount便于查看更新队列的情况
  const countPlusThree = () => {
    setCount(count+1);
    setCount(count+2);
    setCount(count+3);
  }
  return (
    <div className='App'>
      <p>{name} Has Clicked <strong>{count}</strong> Times</p>
      <button onClick={countPlusThree}>Click *3</button>
    </div>
  )
}
复制代码
View Code

const [count, setCount] = useState(0);

const [count, setCount] = useState<number>(0)

useEffect

React Hooks+Umi+TypeScript+Dva开发体验

组件 & Props

组件,从概念上类似于 JavaScript 函数。它接受任意的入参(即 “props”),并返回用于描述页面展示内容的 React 元素。

函数组件与 class 组件

定义组件最简单的方式就是编写 JavaScript 函数:

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}
export default RoomItem;

该函数是一个有效的 React 组件,因为它接收唯一带有数据的 “props”(代表属性)对象与并返回一个 React 元素。这类组件被称为“函数组件”,因为它本质上就是 JavaScript 函数。

你同时还可以使用 ES6 的 class 来定义组件:

class Welcome extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}

上述两个组件在 React 里是等效的。

展开运算符{...props}

解决属性过多,一个个书写麻烦的问题。

React.FC
React.FC<>的在typescript使用的一个泛型,在这个泛型里面可以使用useState,个人觉得useState挺好用的,例子如下:
const SampleModel: React.FC<{}> = () =>{   //React.FC<>为typescript使用的泛型
      const [createModalVisible, handleModalVisible] = useState<boolean>(false); 
      return{
      {/** 触发模态框**/}
      <Button style={{fontSize:'25px'}}  onClick={()=>handleModalVisible(true)} >样例</Button>
      {/** 模态框组件**/}
      <Model onCancel={() => handleModalVisible(false)} ModalVisible={createModalVisible} /> 
  }
View Code

React.Fragment 组件

class Columns extends React.Component {
  render() {
    return (
      <React.Fragment>
        <td>Hello</td>
        <td>World</td>
      </React.Fragment>
    );
  }
}
View Code

生成器函数

yield关键字:暂停

组件类引入了复杂的编程模式,比如 render props 和高阶组件。

React 团队希望,组件不要变成复杂的容器,最好只是数据流的管道。开发者根据需要,组合管道即可。 组件的最佳写法应该是函数,而不是类。

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

但是,这种写法有重大限制,必须是纯函数,不能包含状态,也不支持生命周期方法,因此无法取代类。

React Hooks 的设计目的,就是加强版函数组件,完全不使用"类",就能写出一个全功能的组件。

 

 

资料

Create React App 中文文档

yarn报“文件名、目录名或卷标语法不正确”错误的解决方案

Redux 

posted @ 2020-04-10 22:22  ~沐风  阅读(1027)  评论(0编辑  收藏  举报