flexDirection: строка не работает

Я разрабатываю реактивное приложение. Один из экранов приложения содержит список альбомов. Я разделил каждый контейнер альбома на компоненты Card и CardSection.

Карта может содержать множество разделов CardSections. CardSection будет содержать изображение и 2 текстовых заголовка. Проблема, с которой я столкнулся, связана с позиционированием содержимого в CardSection, поскольку flexDirection:'row' не работает.

Вот CardSection.js

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

import Card from './Card';
import CardSection from "./CardSection";
const AlbumDetail = ({album}) => {

// destructing the props
const {title, artist, thumbnail_image} = album;
return (
    <Card>
        <CardSection>

            <View style={styles.thumbnailContainerStyle}>
                <Image style={styles.thumbnailStyle} source={{uri: thumbnail_image}} />
            </View>

            <View style={styles.headerContentStyle} >
                <Text style={styles.headerTextStyle}>{title}</Text>
                <Text>{artist}</Text>
            </View>

        </CardSection>
    </Card>
);
};

const styles = {
  headerContentStyle: {
     flexDirection: 'column',
     justifyContent: 'space-around'
},
headerTextStyle:{
    fontSize:18
},
thumbnailStyle: {
    height: 50,
    width: 50
},
thumbnailContainerStyle: {
    justifyContent: 'center',
    alignItems: 'center',
    margin: 10,
    marginRight: 10
}
};

export default AlbumDetail;

Вот CardSection.js

import React from 'react';

import {View} from 'react-native';


const CardSection = (props) => {
return (
    <View styles={styles.containerStyle}>
        {props.children}
    </View>
);

};

const styles = {
 containerStyle: {
    borderBottomWidth: 1,
    padding: 5,
    backgroundColor: '#fff',
    justifyContent: 'flex-start',
    flexDirection: "row",
    borderColor: '#ddd',
    position: 'relative'
}
};
export default CardSection;

В результате изображение, расположенное слева и справа от изображения, будет иметь 2 текстовых заголовка, а их flexDirection будет column

«Ожидаемый Проблема


person Atif Javed    schedule 07.07.2018    source источник
comment
Лучший способ отладки — установить react-devtools и выбрать «Показать инспектор», чтобы решить эту проблему. Для меня все выглядит хорошо.   -  person Ashwin Mothilal    schedule 08.07.2018
comment
Да, все хорошо, но я не знаю, почему это не работает. Кстати, спасибо, я установил его.   -  person Atif Javed    schedule 08.07.2018


Ответы (4)


<View styles={styles.containerStyle}> у вас опечатка, это styles, реквизит должен быть style.

person Noitidart    schedule 07.07.2018
comment
Спасибо за ваш ответ, но это не сработало. Вот скриншот: prnt.sc/k3w89c - person Atif Javed; 08.07.2018
comment
Проблема, насколько я думаю, в CardSection.js. Столбец flexDirection: останется столбцом, как и для текстовых заголовков. Строка flexDirection: в CardSection.js не работает. containerStyle: { borderBottomWidth: 1, padding: 5, backgroundColor: '#fff', justifyContent: 'flex-start', flexDirection: "row", borderColor: '#ddd', position: 'relative' } - person Atif Javed; 08.07.2018
comment
Точка на человека.... на точку... это как если бы вы заглянули в мой код... - person Naveen R; 23.08.2020
comment
Это была и моя проблема T__T - person Sam Lahm; 05.04.2021

использовать это

headerContentStyle: {
     flexDirection: 'row',
     justifyContent: 'space-around'
}

вместо

headerContentStyle: {
     flexDirection: 'column',
     justifyContent: 'space-around'
}
person akshay gore    schedule 08.07.2018
comment
Спасибо за ваш ответ, но это не сработало. Вот скриншот: prnt.sc/k3w89c - person Atif Javed; 08.07.2018
comment
Проблема, насколько я думаю, в CardSection.js. Столбец flexDirection: останется столбцом, как и для текстовых заголовков. Строка flexDirection: в CardSection.js не работает. containerStyle: { borderBottomWidth: 1, padding: 5, backgroundColor: '#fff', justifyContent: 'flex-start', flexDirection: "row", borderColor: '#ddd', position: 'relative' } - person Atif Javed; 08.07.2018

Вы должны использовать реквизиты card containerStyle в файле CardSection.js. там вам нужно использовать flexDirection :'row' . Надеюсь, это сработает.

person Savinder Singh    schedule 10.01.2019

У меня была аналогичная проблема, когда flexDirection: 'row' не работал в одном из моих компонентов, которые я импортировал в App.js.

Причиной этого было alignItems: 'center' в таблице стилей для основного контейнера в моем файле App.js.

Я надеюсь, что это поможет кому-то.

person Codebender    schedule 19.01.2019