在React 脚手架中配置less

方法一

脚手架创建项目(ts版本)

npx create-react-app react-project --template typescript

脚手架修改webpack配置

修改webpack配置适配less

安装相关插件

 npm i customize-cra react-app-rewired
 npm i less less-loader@6.0.0 #less-loader不能太高,会报错

修改package.json

 "scripts": {
     "start": "react-app-rewired start", # 主要就是这两列,后面两列可以不用改
     "build": "react-app-rewired build", #
     "test": "react-scripts test",
     "eject": "react-scripts eject"
   }

根路径新建文件config-overrides.js

 // 在文件中添加如下,即可
 const { override, addLessLoader } = require("customize-cra");
 module.exports = override(addLessLoader());

类型检查报错:找不到less模块

修改react-app-env.d.ts,脚手架默认创建,添加如下行

declare module '*.less' {
  interface Style {
    [propName: string]: string
  }
  const style: Style
  export default style
}

less import 问题

如果要使用css module模块,必须将less文件命名为xxx.module.less,才能通过className={style.container}来指定样式,且只能通过这种方式来指定样式

如果不添加.module,则只能import 'xxx.less',无法指定命名className,且不添加.module直接import污染全局样式

方法二

全局安装Creact-React-App

npm install -g create-react-app //全局安装js 版本

在父文件夹创建相应的子文件夹(工程文件夹)

npx create-react-app my-app --template typescript //创建typescript 类型文件

create-react-app my-app	//创建js版本文件

进入相应的工程文件

npm run eject	//打开配置文件

在webpack.config.js文件中设置如下:

起始位置62行左右 less进行如下更改:
const cssRegex = /\.css$/;
const cssModuleRegex = /\.module\.css$/;
const sassRegex = /\.(scss|sass)$/;
const sassModuleRegex = /\.module\.(scss|sass)$/;
const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;
          
           在css配置文件下面,起始位置在500行左右
            {
              test: lessRegex,
              exclude: lessModuleRegex,
              use: getStyleLoaders({
                importLoaders: 3,
                sourceMap: isEnvProduction
                  ? shouldUseSourceMap
                  : isEnvDevelopment,
              }, "less-loader"),
              // Don't consider CSS imports dead code even if the
              // containing package claims to have no side effects.
              // Remove this when webpack adds a warning or an error for this.
              // See https://github.com/webpack/webpack/issues/6571
              sideEffects: true,
            },
            // Adds support for CSS Modules (https://github.com/css-modules/css-modules)
            // using the extension .module.css
            {
              test: lessModuleRegex,
              use: getStyleLoaders({
                importLoaders: 3,
                sourceMap: isEnvProduction
                  ? shouldUseSourceMap
                  : isEnvDevelopment,
                modules: {
                  getLocalIdent: getCSSModuleLocalIdent,
                },
              }, "less-loader"),
            },

安装相应的less包

npm add less less-loader@5.0.0//在这里安装的less-loader的包是低版本 高版本可能存在不兼容的问题
通过less 来修改主题颜色

1.在public/index.html中引入样式

 <link rel="stylesheet/less" type="text/css" href="theme.less" />

2.在public/设置引入样式theme.less

@primary-color: #ff0033;
.btns {
  border: 1px solid @primary-color;
  background: @primary-color;
}
.link:hover {
  color: @primary-color !important;
}
.one:hover {
  color: @primary-color !important;
}
.tipmes {
  color: @primary-color !important;
}

3.在需要改变的地方加入className

<input
              type="button"
              className="btns"
              value="打开胶囊"
              onClick={handeOpen}
            />

4.安装less 添加点击事件


import less from "less"; 

const changeTheme = () => {
    if (num < color.length - 1) {
      setNum(num + 1);
      less.modifyVars({
        "@primary-color": color[num],
      });
    } else {
      setNum(0);
      less.modifyVars({
        "@primary-color": color[num],
      });
    }
  };




版本二

1.需要在/public文件夹下放入一个less文件夹,用来存放需要改变的全局样式

//pulic/style.less

@color: #ff0033;
#root{
  .themeBtn {
    background: @color;
    border: 1px solid @color;
  }
  
  .linkA:hover {
    color: @color;
  }
}

2.在pulic/index.html页面引入less文件

<link rel="stylesheet/less" type="text/css" href="%PUBLIC_URL%/../style.less" />
ps:注意link标签的位置和href路径,如果没有找到style.less文件,会提示*Less* has finished and no sheets were loaded

3.在需要修改全局样式的页面,引入less,用modifyVas方法对样式变量进行修改

import less from "less";

setColor(color: string) {
    less.modifyVars({ "@color": color });
    this.bgColor = color;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在React脚手架配置路由,需要进行以下步骤: 1. 安装React-Router相关的模块(React-Router,React-Router-DOM)。 2. 在需要使用路由的组件,引入BrowserRouter、Route、Link等组件。 3. 使用Route组件来定义路由规则,指定路径和对应的组件。 4. 使用Link组件来创建链接,实现页面跳转。 5. 使用withRouter函数加工一般组件后,可将一般组件变为路由组件,从而可以使用路由组件的方法。 6. 可以使用路由懒加载来提高页面加载速度。 下面是一个简单的React脚手架配置路由的例子: 1. 首先,在终端使用npm安装React-Router和React-Router-DOM模块: npm install react-router-dom --save 2. 在需要使用路由的组件,引入BrowserRouter、Route、Link等组件: import { BrowserRouter, Route, Link } from 'react-router-dom'; 3. 使用Route组件来定义路由规则,指定路径和对应的组件: <BrowserRouter> <div> <ul> <li><Link to="/">Home</Link></li> <li><Link to="/about">About</Link></li> <li><Link to="/contact">Contact</Link></li> </ul> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> <Route path="/contact" component={Contact} /> </div> </BrowserRouter> 4. 使用Link组件来创建链接,实现页面跳转: <Link to="/about">About</Link> 5. 使用withRouter函数加工一般组件后,可将一般组件变为路由组件,从而可以使用路由组件的方法: import { withRouter } from 'react-router-dom'; const MyComponent = ({ history }) => ( <button onClick={() => history.push('/about')}> Go to About page </button> ); export default withRouter(MyComponent); 6. 可以使用路由懒加载来提高页面加载速度: import Loadable from 'react-loadable'; const Home = Loadable({ loader: () => import('./Home'), loading: () => <div>Loading...</div>, }); const About = Loadable({ loader: () => import('./About'), loading: () => <div>Loading...</div>, }); const Contact = Loadable({ loader: () => import('./Contact'), loading: () => <div>Loading...</div>, });

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值