在?React?Native?中使用?CSS?Modules的配置方法
有些前端工程師希望也能像開(kāi)發(fā) web 應(yīng)用那樣,使用 CSS Modules 來(lái)開(kāi)發(fā) React Native。本文將介紹如何在 React Native 中使用 CSS Modules。
安裝依賴和配置
首先安裝 react-native-sass-transformer 使得我們可以在 React Native 應(yīng)用中使用 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"], }, } })()
我們還需要安裝另外兩個(gè)依賴
yarn add babel-plugin-react-native-classname-to-style \ babel-plugin-react-native-platform-specific-extensions -D
修改 babel.config.js 文件,配置剛剛安裝的兩個(gè)插件
module.exports = { presets: ["module:metro-react-native-babel-preset"], plugins: [ "react-native-classname-to-style", [ "react-native-platform-specific-extensions", { extensions: ["scss", "sass"], }, ], ], }
因?yàn)槲覀兊捻?xiàng)目使用了 Typescript,為了避免類(lèi)型警告,在項(xiàng)目中添加一個(gè) global.d.ts 文件,內(nèi)容如下
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, }, })
示例
這里有 一個(gè)示例 ,供你參考。
到此這篇關(guān)于如何在 React Native 中使用 CSS Modules的文章就介紹到這了,更多相關(guān)React Native使用 CSS Modules內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- React找不到模塊“./index.module.scss”或其相應(yīng)的類(lèi)型聲明及解決方法
- react 報(bào)錯(cuò)Module build failed: BrowserslistError: Unknown browser query `dead`問(wèn)題的解決方法
- 關(guān)于React Native報(bào)Cannot initialize a parameter of type''NSArray<id<RCTBridgeModule>>錯(cuò)誤(解決方案)
- 在Create React App中使用CSS Modules的方法示例
- 在create-react-app中使用css modules的示例代碼
- 詳解使用create-react-app添加css modules、sasss和antd
- react使用css module無(wú)法重寫(xiě)bootstrap樣式問(wèn)題及解決
相關(guān)文章
使用Jenkins部署React項(xiàng)目的方法步驟
這篇文章主要介紹了使用Jenkins部署React項(xiàng)目的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03react render的原理及觸發(fā)時(shí)機(jī)說(shuō)明
這篇文章主要介紹了react render的原理及觸發(fā)時(shí)機(jī)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02詳解React如何實(shí)現(xiàn)代碼分割Code Splitting
這篇文章主要為大家介紹了React如何實(shí)現(xiàn)代碼分割Code Splitting示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08react-router browserHistory刷新頁(yè)面404問(wèn)題解決方法
本篇文章主要介紹了react-router browserHistory刷新頁(yè)面404問(wèn)題解決方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-12-12React Ref Callback使用場(chǎng)景最佳實(shí)踐詳解
這篇文章主要為大家介紹了React Ref Callback使用場(chǎng)景最佳實(shí)踐詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01