React+redux项目搭建流程

创建ts类型的React项目 记录一下自己学习react的过程 阅读详情

1.创建项目

create-react-app my-project --template typescript              // 创建项目并使用typescript

2.去除掉没用的文件夹,只保留部分有用的文件
在这里插入图片描述
3.项目配置:
配置项目的icon
配置项目的标题
配置项目的别名等(craco.config.ts)
配置tsconfig.json
4.安装craco用于扩展webpack配置,注意版本号与下方一致

npm install @craco/craco@alpha -D

项目根目录下创建craco.config.js扩展webpack配置

const CracoLessPlugin = require("craco-less");
const path = require("path");
const resolve = (dir) => path.resolve(__dirname, dir);
module.exports = {
  plugins: [{ plugin: CracoLessPlugin }],
  webpack: {
    alias: {
      //别名配置
      "@": resolve("src")
    }
  }
};

tsconfig.json配置

{
  "compilerOptions": {
    "allowJs": false,
    "jsx": "react-jsx",
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }
  }
}

启动命令修改为craco
在这里插入图片描述
5.代码格式化配置
集成editorconfig
editorconfig有助于为不同的IDEA上处理同一项目的多个开发人员维护一致的编码风格
vscode安装插件
在这里插入图片描述
根目录新建文件:.editorconfig,并写入以下内容

# http://editorconfig.org

root = true
[*] #表示所有文件适用
charset = utf-8  #设置文件字符集
indent_style = space #缩进风格
indent_size = 2#缩进大小
end_of_line = lf#控制换行类型
trim_trailing_whitespace=true #去除行尾的任意空白字符
insert_final_newline=true#始终在文件末尾插入一个新行

[*.md] #表示仅md文件适用以下规则
max_line_length=off
trim_trailing_whitespace=false

prettier安装并配置

npm install prettier -D

根目录创建文件.prettierrc,并写入以下配置,如需其他配置可自行网上查阅

{
  "useTabs": false,  // 使用tab缩进
  "tabWidth": 2,  // tab代表几个空格
  "printWidth": 80, // 当行字符长度
  "singleQuote": false,  // 是否使用单引号
  "trailingComma": "none",  // 多行输入是否添加尾逗号
  "semi": true  // 语句末尾是否加分号
}

eslint安装并配置

npm install eslint -D  // 安装eslint
npx eslint --init   // 初始化配置

配置选择
在这里插入图片描述
最终目录结构划分
在这里插入图片描述
css重置
新建文件:src/assets/css/reset.less // 自定义css重置文件

npm install normalize.css  // 别人封装的公共css重置文件
npm install craco-less@2.1.0-alpha.0  // 引入less支持

import "normalize.css";  // src/index.tsx文件引入
import "./assets/css/reset.less";  // src/index.tsx文件引入

6.路由配置
src/router/index.tsx文件

import type { RouteObject } from "react-router-dom";
import { Navigate } from "react-router-dom";
import React, { lazy } from "react";
// import Discover from "@/views/discover";
// import Mine from "@/views/mine";
// import Focus from "@/views/focus";
// import Download from "@/views/download";

// 懒加载模式,打包时会分包
const Discover = lazy(() => import("@/views/discover"));
const Recommend = lazy(() => import("@/views/discover/c-views/recommend"));
const Ranking = lazy(() => import("@/views/discover/c-views/ranking"));
const Songs = lazy(() => import("@/views/discover/c-views/songs"));
const DJradio = lazy(() => import("@/views/discover/c-views/djradio"));
const Artist = lazy(() => import("@/views/discover/c-views/artist"));
const Album = lazy(() => import("@/views/discover/c-views/album"));

const Mine = lazy(() => import("@/views/mine"));
const Focus = lazy(() => import("@/views/focus"));
const Download = lazy(() => import("@/views/download"));

const routes: RouteObject[] = [
  {
    path: "/",
    element: <Navigate to="/discover"></Navigate>
  },
  {
    path: "/discover",
    element: <Discover />,
    children: [
      {
        path: "/discover",
        element: <Navigate to="/discover/recommend"></Navigate>
      },
      {
        path: "/discover/recommend",
        element: <Recommend />
      },
      {
        path: "/discover/ranking",
        element: <Ranking />
      },
      {
        path: "/discover/songs",
        element: <Songs />
      },
      {
        path: "/discover/djradio",
        element: <DJradio />
      },
      {
        path: "/discover/artist",
        element: <Artist />
      },
      {
        path: "/discover/album",
        element: <Album />
      }
    ]
  },
  {
    path: "/mine",
    element: <Mine />
  },
  {
    path: "/focus",
    element: <Focus />
  },
  {
    path: "/download",
    element: <Download />
  }
];

export default routes;

路由使用
App.js

import { useRoutes, Link } from "react-router-dom";

<div className="nav">
 <Link to="/discover">发现音乐</Link>
        <Link to="/mine">我的音乐</Link>
        <Link to="/focus">关注</Link>
 <Link to="/download">下载客户端</Link>
 </div>
{/* Suspense:组件还未加载完毕时的应急显示方案 */}
 <Suspense fallback="loading...">
        <div className="main">{useRoutes(routes)}</div>
 </Suspense>

子组件中使用

import { Outlet, Link } from "react-router-dom";

  <div>
      <div>
        <Link to="/discover/recommend">推荐</Link>
        <Link to="/discover/ranking">排行榜</Link>
        <Link to="/discover/songs">歌单</Link>
        <Link to="/discover/djradio">主播电台</Link>
        <Link to="/discover/artist">歌手</Link>
        <Link to="/discover/album">新碟上架</Link>
      </div>
      <Outlet />
    </div>

7.集成redux
安装

npm install @reduxjs/toolkit react-redux

相关文件
在这里插入图片描述
在这里插入图片描述
使用方法
import store from “./store”; src/index.tsx 引入
需要使用的文件做如下使用
在这里插入图片描述
src/index.tsx文件
在这里插入图片描述

从零开始:kohya_ss环境部署与LoRA/SDXL模型训练实战指南 本文提供了一份详细的kohya_ss环境部署与模型训练实战指南。从零开始,手把手教你使用Conda创建虚拟环境、安装依赖并启动Web GUI界面。核心内容涵盖高质量数据集的准备方法,并重点解析了如何使用kohya_ss工具进行LoRA模型和SDXL模型的微调训练,包括关键参数配置与常见报错解决方案,帮助初学者快速上手AI绘画模型定制。 阅读详情

相关推荐

自学PCB思路 | PCB设计零基础入门-小白适用(附详细入门经验分享)

本人大一在实践课上就听说PCB,被虎的一楞一楞的,不过现在回看,发现其实并没有相信的那么难!想着把自己这一路摸索的学习路线分享一下,当时我是一边摸索一边上手,一把鼻涕一把泪的过来的。如果你想搞硬件或者需要搞硬件,下面是我的入门学习过程,希望可以帮到你。目录前言选择一款设计软件好的入门课程掌握抄板元件采购焊板子烙铁头热风枪自己半设计明确设计需求全设计最后我并非什么大佬,也没法自己去教大家如何画板。

自动化小秋葵的博客 1万+

React笔记(八)Redux

为了方便使用,Redux 的作者封装了一个 React 专用的库,本文主要介绍它。React-Redux 将所有组件分成两大类:UI 组件(presentational component)和容器组件(container component)。

m0_74343097的博客 2004

Hyper-V显卡直通实战:手把手解决Windows 11虚拟机错误码43(附完整参数配置)

本文详细解析了在Windows 11 Hyper-V虚拟机中配置显卡直通时遭遇错误码43的根源,并提供了从环境检查、核心PowerShell命令(如Set-VMGpuPartitionAdapter)配置到虚拟机内驱动替换的完整实战解决方案,帮助用户彻底解决显卡驱动无法加载的问题。

weixin_29238147的博客 903

创建React + Ts项目

安装完成后会在项目根目录生成.eslitrc.js文件,然后改一下规则(可以根据自己需求增减规则)8、你希望你的配置文件是什么格式的?(JavaScript,其它的可以自行百度)7、遵循哪一种流行风格?(可以根据自己项目所需定义,我选Airbnb)eslint初始化后会出现三个项目,根据项目而定。6、如何定义项目定义样式?(使用流行的风格指南)1、使用什么样的eslint?2、项目使用什么类型的模块?9、你现在就安装他们吗?(Yes,yarn)3、项目使用哪个框架?...

江一铭 2999

详解如何用爬虫工具批量采集阿里巴巴批发网商品数据

本文主要介绍如何使用后羿采集器的智能模式,免费采集阿里巴巴批发网商品的批发价格、发货时间、是否代发等信息。 采集字段: 商品标题、商品链接、图片链接、标签1、标签2、标签3、价格、30天成交数、 评价、店铺 功能点目录: 如何对采集字段进行配置 如何采集列表+详情页类型网页 采集结果预览: 下面我们来详细介绍一下如何免费采集1688批发网的商品数据,我们以“羽绒服女”为例,具体步骤如下: 步骤一...

weixin_43777427的博客 1万+

新能源充电桩充电枪口标准

建立的标准确保了新能源汽车充电的安全性、兼容性和效率,促进了新能源汽车产业的发展。

网络安全的研究者、新能源行业的追求者 4695

react+ts搭建

react+ts搭建

m0_56540662的博客 1万+

从零开始跑通3DGS教程:(四)修改(缩放、空间变换)colmap生成的sfm结果

通过colmap进行的sfm的普通方式会丢失场景的物理尺度信息,并且并不在符合一般认知的坐标系下,本文将读取colmap生成的点云和相机pose,将其进行空间变换和缩放之后,重新保存,新保存的结果仍然可以被colmap读取以及进行后续的稠密重建以及3dgs等工作

诺有缸的高飞鸟的博客 1425

使用create-react-app构建react+ts项目(超详细)

本文主要介绍的是如何通过create-react-app快速搭建一个react+ts的web项目,同时引入了ant-design作为UI组件库,路由(react-router-dom)以及使用redux作为状态管理库;希望通过结合一些简单案例的实践掌握react开发的基本基础以及帮助一些有需要的同学.

qq_52569656的博客 1万+

MT4/MT5 第三代移动平均线(MetaTrader 指标)

第三代移动平均线(3G-MA)是传统MA指标的升级版本,通过"时滞压缩"算法将信号滞后降至理论极限(λ=2)。该指标在保留平滑性的同时,信号速度比EMA快1.5-2.3倍,适用于MT4/MT5平台。核心参数包括计算周期(默认34)、滞后压缩系数(2-10)和应用价位选择,支持斜率变色功能。安装简单,无需外部依赖,通过多周期共振可提升12-18%胜率。指标代码包含完整的MT4/MT5实现方案,采用双缓冲计算结构,通过相位前移算法抵消群延迟。风险提示:需配合其他技术指标和严格风控(≤2%账户

JanLEE 582

1、深入解析OTA/gm - C滤波器架构与设计

本文深入探讨了OTA/gm-C滤波器的架构与设计方法,涵盖了从基本构建模块到高阶滤波器实现的多种技术。重点分析了双积分器环路结构(如Tow-Thomas和KHN滤波器)的工作原理、性能特点及OTA非理想特性对滤波器的影响,并介绍了降低寄生效应、提升动态范围的方法。文章还讨论了基于LC梯形仿真、多环反馈和电流模式的gm-C滤波器设计,以及自动调谐技术在频率稳定性中的应用。最后总结了不同类型gm-C滤波器的优缺点及其适用场景,为高频集成连续时间滤波器的设计提供了全面的技术参考。

fanta的博客 187

基础-搭建react项目教程

前言 本文详细的介绍如何从头开始搭建一个react项目,帮助新人了解项目搭建流程和打包流程。 需要注意包版本问题,不同版本代表着不同的代码。如果包版本不同启动项目时可能会出现未知错误。 目录说明 └─config #webpack配置文件 │ webpack.build.config.js #webpack生产配置文件 │ webpack.dev.config.js #webpack开发配置文件 │ d

小小的前端 823

FineReport实战-- 国内外各地区销售数据分析 多个图表联动

进行国内外各地区业务员销售数据分析是一项复杂但极具价值的任务,它可以帮助企业了解不同市场的表现,并据此调整销售策略以提高整体绩效。实现功能:同一个报表里面多个图表联动问题。

Davina_yu的博客 1201

Webpck&React,redux学习

入门Webpack,看这篇就够了 一步步搭建React项目(二):使用webpack配置开发环境

robinson_911的专栏 328

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

React Native搭建简单的项目框架React Navigation + redux

React Native搭建简单的项目框架 React Native 是Facebook于2015年4月开源的跨平台移动应用开发框架, 短短的一两年的发展就已经有很多家公司支持并采用此框架来搭建公司的移动端的应用, React Native使你能够在Javascript和React的基础上获得完全一致的开发体验,构建世界一流的原生APP。 虽然可能没有说的那么厉害,但是我们不可否认,它在统一...

spicyShrimp的博客 2616

react全家桶从0到1(react-router4、redux、redux-saga)

本文从零开始,逐步讲解如何用react全家桶搭建一个完整的react项目。文中针对react、webpack、babel、react-route、redux、redux-saga的核心配置会加以讲解,希望通过这个项目,可以系统的了解react技术栈的主要知识,避免搭建一次后面就忘记的情况。代码库:https://github.com/teapot-py/react-demo首先关于主要的npm包版...

weixin_33798152的博客 1820

《一》Redux

基于 Redux4。Redux 不是 Facebook 开发的,它是一个专门用于做状态管理的 JS 库,它的作用是集中式管理应用中多个组件共享的状态。Redux 和 React 并没有直接的关系,可以将 Redux 与 React、Vue 或任何其他类似的界面库一起使用。React 是在视图层解决了 DOM 的渲染问题(开发者编写 JSX,React 生成虚拟 DOM,最终渲染成真实 DOM),但是状态 State 依然是留给开发者自己来管理。

花铛 566

React+TS项目搭建

使用搭建React+TS项目。

2201_75702085的博客 3047

Redux使用教程【入门篇】

Redux还提供了一些高级特性,如中间件(middleware)和组件连接(connect)等,用于处理异步操作和在React组件中使用Redux。请注意,Redux的学习曲线较陡,需要一些时间和实践来理解其思想和模式。创建Redux Store:创建一个Redux store来管理应用程序的状态。Store是一个包含所有状态的对象。Redux是一个用于JavaScript应用程序状态管理的可预测状态容器。订阅状态变化:可以使用subscribe方法订阅状态的变化,以便在状态更新时做出响应。

2301_76418831的博客 608

零到一react+ts项目搭建

*·**因为都是写静态的数据,可以自行定义,路由跳转核心是useNavigate,useRouters两个方法,通过useRouters()获取路由表,使用useNavigate()获得navigate函数(navigate是自定义的变量,可以是任意字符串),它接收两个参数,第一个是路径,第二个是可配置对象。**·**react项目默认隐藏了webpack相关配置文件,如果想要暴露在项目中,需要执行npm run eject,此操作无法回退,根据需要执行;

weixin_45158228的博客 1710

React--》如何在React中创建TypeScript项目并使用?

我们之前在不使用TS时,会使用prop-types库,为React组件提供类型检查,而在使用TS后,其提供的组件类型校验代替了PropTypes,所以说不管是React还是Vue,只要是支持TS的库,都提供了很多类型来满足该库对类型的需求。

ztK63LrD的博客 2574

【React】TS项目配置Redux

【React】TS项目配置Redux

owo_ovo的博客 1172

reactjs教程:安装Redux库及Redux入门示例

以上示例展示了Redux的基本工作流程。通过定义初始状态、动作类型和Reducer函数,创建Redux store,并使用。方法订阅状态的变化。这样,Redux就可以管理应用程序的状态,并提供可预测和可控制的数据流。方法派发动作来更新状态。方法可以获取当前状态,并通过。

学亮编程手记 689

Redux的详细配置和使用

Redux详细配置和使用

u014409941的博客 236

redux

一,前言 1.redux是一个状态管理器。 2.不仅react可以使用redux,其他地方若需要状态管理器都可以使用redux。 3.可以使用npm管理工具安装redux:npm install redux 二,原生redux介绍 1.state:redux的一个重要的概念,是一个对象,用于定义初始状态。 2.reducers: redux的一个重要的概念,定义了如何根据action.type来修改state,也是唯一能够修改state的地方,是一个函数,函数的第一个参数即是初始状态state。函数的第一个

过客如期的博客 438

创建React+Ts项目

App.tsx 文件 引用 ant design react。

poguanba的博客 790

React+TS 从零开始教程(1)

里面是一个空的{} 再来建一个.prettierignore,类似于.gitignore,是指我们不需要格式化的文件。现在我们说下prettier是干嘛用的吧,他就是帮我们自动格式化的,统一格式化代码,这样就不需要我们一个个文件去格式化了。并且将刚才的db.json移动进去,这个目录用__开头,代表跟项目本身没啥关系,只是辅助。post代表提交数据,返回了一个新的user,并且,我们的db.json也改了。注意,如果你的node版本很低,14左右的样子,用下面这个(MD搞死了~)

java小白翻身 2276
上一篇: react学习-redux快速体验
下一篇: cesium基础设置
大兵的猫
博客等级 码龄7年 364粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大兵的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值