前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从零开始搭建一个React TypeScript项目

从零开始搭建一个React TypeScript项目

作者头像
德顺
发布2021-07-06 15:02:08
6.5K0
发布2021-07-06 15:02:08
举报
文章被收录于专栏:前端资源

最近开始使用 React 和 TypeScript 开发项目了,顺便整理一下 react-ts 项目的创建过程。

node/npm 这些基本的东西就不再赘述了,没有的自行安装一下。

下面正片开始:

全局安装 create-react-app

代码语言:javascript
复制
 npm install -g create-react-app
 // 如果很久之前安装过,建议卸载重新安装 npm uninstall -g create-react-app

创建项目

参考 官方文档

代码语言:javascript
复制
 npx create-react-app my-app --template typescript

启动项目

代码语言:javascript
复制
 cd my-app //进入项目目录
 npm run start

目录调整

创建完成后项目目录是这样的,有点乱。

可以把无用的初始化文件删除。

安装 react-router

代码语言:javascript
复制
 yarn add react-router-dom
 // OR npm install --save react-router-dom

TypeScript 支持:

代码语言:javascript
复制
 npm i --save-dev @types/react-router-dom

运行时报错:

代码语言:javascript
复制
 Could not find a declaration file for module 'react'. 'D:/react/hao-w3h5-react/node_modules/react/index.js' implicitly has an 'any' type.
   If the 'react' package actually exposes this module, consider sending a pull request to amend 'https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react'  TS7016
 
   > 1 | import React from 'react';
       |                   ^
 ...

原因及解决方法:

不知道咋回事,我安装的时 react-ts 模板,还有这个报错。

比较明显是没有 react 的定义文件,如果使用 TypeScript,除了源代码,还需要有 @types 文件 。

执行命令安装定义文件:

代码语言:javascript
复制
npm install @types/react --save

创建路由和页面

创建一个页面

@/pages/home/index.tsx

代码语言:javascript
复制
 import React from 'react'
 
 function Home () {
   return (
     <div>
       <h1>HomePage</h1>
       <h2>www.w3h5.com</h2>
     </div>
   )
 }
 
 export default Home;

可以以同样的方法再创建一个 detail 页面。

配置路由

@/routers/index.tsx

代码语言:javascript
复制
 import { lazy } from 'react' // 路由懒加载
 const Home = lazy(() => import ('../pages/home'))
 const Detail = lazy(() => import ('../pages/detail'))
 
 export type RouterType = {
   path: string,
   component: React.LazyExoticComponent<any>,
   root: string[],
   notExect?: boolean,
 }[]
 
 const Routers: RouterType = [{
   path: '/home',
   component: Home,
   root: [],
 },{
   path: '/detail',
   component: Detail,
   root: [],
 },]
 
 export default Routers

配置 App.tsx

@/routers/App.tsx

代码语言:javascript
复制
 import React from 'react'
 import { Redirect, Route, Switch, withRouter } from 'react-router-dom'
 import Routers from './routers'
 function App () {
   return (
     <Switch>
       {
         Routers.map(router => (
           <Route
             exact={!router.notExect}
             key={router.path}
             path={router.path}
             component={router.component}
           >
           </Route>
         ))
       }
       {/* 设置默认路由 推荐方法一*/}
       {/* 重定向*/}
       <Redirect path="/" to="/home" />
     </Switch>
   )
 }
 
 export default withRouter(App)

在 index.tsx 引用

@/routers/index.tsx

代码语言:javascript
复制
 import React, { Suspense } from 'react';
 import ReactDOM from 'react-dom';
 import App from './App';
 import { BrowserRouter, Route, Switch } from 'react-router-dom';
 
 ReactDOM.render(
   <BrowserRouter>
     {/* 使用了路由懒加载,所以需要使用<Suspense>包起来 */}
     <Suspense fallback={<div></div>}>
       <Switch>
         <Route path="/" render={routerProps => {
           return <App {...routerProps}/>
         }}/>
       </Switch>
     </Suspense>
   </BrowserRouter>,
   document.getElementById('root')
 );

运行验证

现在就可以访问 http://localhost:3000/home 查看效果了。

未经允许不得转载:w3h5 » 从零开始搭建一个React TypeScript项目

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 全局安装 create-react-app
  • 创建项目
  • 启动项目
    • 目录调整
      • 安装 react-router
        • 创建路由和页面
          • 运行验证
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档