Установка стиля из родительского компонента (props) и из самого компонента react native

#javascript #reactjs #styles #native

#javascript #reactjs #стили #собственный

Вопрос:

можно ли установить некоторые свойства стиля из родительского элемента в качестве реквизита и некоторые свойства стиля из самого компонента?

Вот мой компонент:

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

class BackgroundMar extends Component {

render(){
    return (
        <View style={[styles.viewStyle]}>
            <Text>{this.props.test}</Text>
        </View>
    )
    }
};

var styles = {
viewStyle: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
    backgroundColor: props.color
}
};

export default BackgroundMar;
  

И вот мой родитель:

 import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import BackgroundMar from "./components/BackgroundMar";

export default class App extends React.Component {
  render() {
    return (
    <BackgroundMar
        test={'aaa'}
        color={'#ff2044'}
    />
    );
  }
};

});
  

Я хотел бы установить только backgroundColor из родительского.

Ответ №1:

Хорошо, я нашел решение. На родительском:

 export default class App extends React.Component {
render() {
return (
    <BackgroundMar
        test={'#52a03f'}
    />
);
}
};
  

На самом компоненте:

 class BackgroundMar extends Component {

render(){
    return (
        <View style={[styles.viewStyle, { backgroundColor: this.props.test}]}>
            <Text>{this.props.test}</Text>
        </View>
    )
}
};

var styles = {
viewStyle: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
}
};
  

Комментарии:

1. вы сделали то же самое, что я хотел объяснить, хорошо, например, как добавлять стили динамически, варианты использования отличаются от проекта к проекту 🙂

2. о, хорошо, извините, я вас неправильно понял. Спасибо за помощь. 🙂

Ответ №2:

Попробуйте что-то вроде

Сначала отправьте стили из родительского компонента как объект … например..

 style={{color:"#abcd"}}
  

затем внутри дочернего компонента. добавьте это в массив стилей

 <View style={this.props.style ? [styles.viewStyle, this.props.style] : 
  [styles.viewStyle]}>
  

Комментарии:

1. Это не работает. Я не могу передать такой объект. экспорт приложения класса по умолчанию расширяет React. Компонент { render() { return ( <BackgroundMar test={‘aaa’} style={color:’#ff2044′} /> ); } }; У меня «Ошибка при чтении составного ответа»