RN中的StyleSheet

一、RN中样式的特点

RN的样式和前端的CSS的样式有一些区别。主要如下:

RN中的样式

前端的CSS

继承性

没有继承性

有继承性

命名

fontSize(小驼峰命名)

font-size

尺寸单位

with: 100

With: 100px

特殊的样式名

marginHorizontal(水平外边距)、

marginVertical(垂直外边距)

二、声明方式

1、通过组件的style属性直接声明

当属性值为对象或者数组时,如下示例:

属性值为对象:<Text style={ {样式} }/>

属性值为数组:<Text style={ [{样式1}, {样式2}, {样式3},..., {样式n}] }/>

2、使用StyleSheet声明的样式

在组件里使用StyleSheet声明的样式,按照以下三步即可:

引入StyleSheet: import { StyleSheet, View} from 'react-native'

声明样式:const myStyle = StyleSheet.create({foot: {样式1}, bar: {样式2}})

使用样式:<View style={ [ myStyle.foot, myStyle.bar]} > 显示内容 </View>

三、 实例代码

入口文件App.tsx

import {View} from 'react-native'
import React from 'react'
import Index from './src/stylesheet'

const App = () => {
  return (
    <View>
      <Index />
    </View>
  )
}

export default App

stylesheet目录下的index.tsx文件

import {StyleSheet, Text, View} from 'react-native'
import React from 'react'

const index = () => {
  return (
    <View>
      <Text style={{fontSize: 20, color: 'red'}}>红色</Text>

      <Text style={[{fontSize: 20, color: 'red'}, {fontSize: 20, color: 'green'}]}>绿色覆盖红色</Text>

      <Text style={[styles.text1]}>黄色</Text>

      <Text style={[styles.text1, styles.text2]}>蓝色覆盖黄色</Text>
    </View>
  )
}

export default index

const styles = StyleSheet.create({
 text1: {
  fontSize: 30,
  fontWeight: 'bold',
  color: 'yellow',
 },
 text2: {
  fontSize: 30,
  fontWeight: 'bold',
  color: 'blue',
 },
})

这里需要提示一下,直接在style属性声明的方式,虽然也可以实现效果,但是推荐使用stylesheet。如果style属性值是一个数组,后面对象里的设置会覆盖前面对象里相同的设置。

React Native (RN) 中,控制组件的行为和样式通常通过状态 (state) 和属性 (props) 来实现。以下是一些常见的方法和示例: 1. **状态 (State)**: 状态用于管理组件内部的数据。当状态发生变化时,组件会重新渲染。 ```javascript import React, { useState } from 'react'; import { View, Text, Button } from 'react-native'; const Counter = () => { const [count, setCount] = useState(0); return ( <View> <Text>Count: {count}</Text> <Button onPress={() => setCount(count + 1)} title="Increase" /> </View> ); }; export default Counter; ``` 2. **属性 (Props)**: 属性用于从父组件向子组件传递数据。属性是不可变的,如果需要改变,需要通过状态来实现。 ```javascript import React from 'react'; import { View, Text, TextInput } from 'react-native'; const Greeting = (props) => { return ( <View> <Text>Hello, {props.name}!</Text> </View> ); }; const App = () => { return ( <View> <Greeting name="World" /> <Greeting name="React Native" /> </View> ); }; export default App; ``` 3. **样式控制**: 样式可以通过内联样式StyleSheet 对象或动态样式来控制。 ```javascript import React from 'react'; import { View, Text, StyleSheet } from 'react-native'; const StyledText = (props) => { return ( <View> <Text style={[styles.text, props.style]}>{props.text}</Text> </View> ); }; const App = () => { return ( <View> <StyledText text="Dynamic Style" style={{ color: 'blue' }} /> </View> ); }; const styles = StyleSheet.create({ text: { fontSize: 20, }, }); export default App; ``` 通过这些方法,你可以灵活地控制 RN 组件的行为和样式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值