如何在动态响应本机中设置默认样式和用户定义样式?

Asb*_*Ali 1 css reactjs react-native

在我的本机应用程序中,我只是想添加一个名为RoundImageComponent的共享组件, 并添加一个RoundImageComponent.style以添加CSS样式。使用此圆形图像组件时,图像的宽度将根据应用程序的要求作为道具传递。在某些情况下,宽度不会按以下方式添加到组件标签中,

RoundImageComponent width={90} roundImage="https://media.wired.com/photos/593222b926780e6c04d2a195/master/w_2400,c_limit/Zuck-TA-AP_17145748750763.jpg" />
Run Code Online (Sandbox Code Playgroud)

要么

RoundImageComponent roundImage="https://media.wired.com/photos/593222b926780e6c04d2a195/master/w_2400,c_limit/Zuck-TA-AP_17145748750763.jpg" />
Run Code Online (Sandbox Code Playgroud)

RoundImageComponent代码

import React from 'react';
import {
Text,
View,
} from 'react-native';
import Config from 'react-native-config';
import SplashScreen from 'react-native-splash-screen';
import RoundImageComponent from "./shared/avatar/RoundImageComponent";
import styles from './App.styles';

const resolveSession = async () => {
 // const session = sessionActions.getSession();
 SplashScreen.hide();
};

setTimeout(() => {
 resolveSession();
}, 2000);

const App = () => (
<View style={styles.container}>
<RoundImageComponent width={90}roundImage="https://media.wired.com/photos/593222b926780e6c04d2a195/master/w_2400,c_limit/Zuck-TA-AP_17145748750763.jpg" />
</View>
);

export default App;
Run Code Online (Sandbox Code Playgroud)

RoundImageComponent

import {
  StyleSheet,
} from 'react-native';

import { container, primaryText } from '../../theme/base';


export const defaultImage = {
height: 100,
borderRadius: 50,
width: 100
}
const styles = StyleSheet.create({
container: {
 ...container,
},
 userDefinedImage: {
...defaultImage,
width: 40
 }
});

export default styles;
Run Code Online (Sandbox Code Playgroud)

当用户将宽度作为属性传递时,图像宽度应覆盖默认宽度,否则图像宽度应保留为默认宽度。这样可以吗?

Rev*_*ddh 5

通过将道具传递给样式,这是可能的。假设这是我的CustomTextComponent:

export CustomTextComponent = (props)=>{
     return (
         <Text style={[{fontFamily:"Lato", color:"#000", ...props.style}]}>
                {props.children}
        </Text>
    )
}
Run Code Online (Sandbox Code Playgroud)

现在我想在不同级别设置不同的颜色,然后说红色和绿色

对于 red

<CustomTextComponent style={{color:'red'}}> 
           red colored text
</CustomTextComponent>
Run Code Online (Sandbox Code Playgroud)

对于 green

<CustomTextComponent style={{color:'green'}}> 
           red colored text
</CustomTextComponent>
Run Code Online (Sandbox Code Playgroud)

注意:您的...props.styleis应该在您的默认样式之后。因为您最后提到的内容将覆盖前一个。default props value在某些情况下,您也可以使用。(lib PropsType)