在 React Native 中使用 CSS Modules的配置方法

 更新时间:2022年08月01日 11:29:12   作者:todoit  
有些前端工程师希望也能像开发 web 应用那样,使用 CSS Modules 来开发 React Native,本文将介绍如何在 React Native 中使用 CSS Modules,需要的朋友可以参考下

有些前端工程师希望也能像开发 web 应用那样,使用 CSS Modules 来开发 React Native。本文将介绍如何在 React Native 中使用 CSS Modules。

安装依赖和配置

首先安装 react-native-sass-transformer 使得我们可以在 React Native 应用中使用 sass 样式。

yarn add react-native-sass-transformer sass -D

参考如下配置,修改 metro.config.js 文件

const { getDefaultConfig } = require("metro-config")
module.exports = (async () => {
  const {
    resolver: { sourceExts },
  } = await getDefaultConfig()
  return {
    transformer: {
      babelTransformerPath: require.resolve("react-native-sass-transformer"),
    },
    resolver: {
      sourceExts: [...sourceExts, "scss", "sass"],
    },
  }
})()

我们还需要安装另外两个依赖

yarn add babel-plugin-react-native-classname-to-style \
  babel-plugin-react-native-platform-specific-extensions -D

修改 babel.config.js 文件,配置刚刚安装的两个插件

module.exports = {
  presets: ["module:metro-react-native-babel-preset"],
  plugins: [
    "react-native-classname-to-style",
    [
      "react-native-platform-specific-extensions",
      {
        extensions: ["scss", "sass"],
      },
    ],
  ],
}

因为我们的项目使用了 Typescript,为了避免类型警告,在项目中添加一个 global.d.ts 文件,内容如下

declare module "*.scss"

使用

React Native CSS Modules 支持 @mixin @include @extend 等操作

@mixin lightFontStyle($fontColor: rgb(0, 0, 0)) {
  font-size: 22px;
  font-family: $sencodary-font-light;
  letter-spacing: 0.96px;
  color: $fontColor;
}

.input {
  @include lightFontStyle($fontColor: rgb(39, 39, 39));
  padding: 12px 20px 40px;
  flex: 1;
}

.disabled {
  @extend .input;
  color: rgb(99, 99, 99);
}

CSS Modules 也可以很好的和 StyleSheet 一起工作

// App.scss
@import "./theme/font.scss";

.welcome {
  font-family: $primary-font;
  font-size: 17px;
  text-align: center;
}
//App.tsx
import React from "react"
import { Text, StyleSheet } from "react-native"
import scss from "./App.scss"

function Welcome(props: Props) {
  return <Text style={[scss.welcome, styles.text]}>Hello {props.name}!</Text>
}

const styles = StyleSheet.create({
  text: {
    backgroundColor: "transparent",
    margin: 8,
  },
})

示例

这里有 一个示例 ,供你参考。

到此这篇关于如何在 React Native 中使用 CSS Modules的文章就介绍到这了,更多相关React Native使用 CSS Modules内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • React useContext与useReducer函数组件使用

    React useContext与useReducer函数组件使用

    useContext和useReducer 可以用来减少层级使用, useContext,可以理解为供货商提供一个公共的共享值,然后下面的消费者去接受共享值,只有一个供货商,而有多个消费者,可以达到共享的状态改变的目的
    2023-02-02
  • Vite + React从零开始搭建一个开源组件库

    Vite + React从零开始搭建一个开源组件库

    这篇文章主要介绍了Vite + React 如何从0到1搭建一个开源组件库,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • React实现生成和导出Word文档的方法详解

    React实现生成和导出Word文档的方法详解

    React是一个流行的JavaScript库,用于构建现代前端应用程序,本文将深入探讨如何在React中生成和导出Word文档,感兴趣的小伙伴可以学习一下
    2023-09-09
  • useState 解决文本框无法输入的问题详解

    useState 解决文本框无法输入的问题详解

    这篇文章主要为大家介绍了useState 解决文本框无法输入的问题详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • React中多语言的配置方式

    React中多语言的配置方式

    这篇文章主要介绍了React中多语言的配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • react使用.env文件管理全局变量的方法

    react使用.env文件管理全局变量的方法

    本文主要介绍了react使用.env文件管理全局变量的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • react-native只保留3x图原理解析

    react-native只保留3x图原理解析

    这篇文章主要为大家介绍了react-native只保留3x图原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • React中引入less、less-loader问题

    React中引入less、less-loader问题

    这篇文章主要介绍了React中引入less、less-loader问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • React+Mobx基本使用、模块化操作

    React+Mobx基本使用、模块化操作

    React 和 MobX 是一对强力组合,React 通过提供机制把应用状态转换为可渲染组件树并对其进行渲染,而MobX提供机制来存储和更新应用状态供 React 使用,这篇文章主要介绍了React+Mobx基本使用、模块化,需要的朋友可以参考下
    2022-09-09
  • React错误的习惯用法分析详解

    React错误的习惯用法分析详解

    这篇文章主要为大家介绍了React错误用法习惯分析详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01

最新评论