Card Design with Props and Children : Part 4

Card Design is just like to create a boxes to hold Video Title, Video Image and Click button. By Adding some shades border by styling we will add a good design view for all listing. These are common component which we can use many places in app

 

 

Now we will create Cards Wrapper and CardsInner so for this we will create new files

CardWrapper.js and CardsInner.js in common folder of src folder

 

Creating CardWrapper

Open CardWrapper.js file and start importing components from react and react native

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

class CardWrapper extends Component {
  render() {
  return (
  <View>
      {this.props.children}
  </View>
  );
 }
}

Here i have added this.props.children this will call the component which we will add inside CardWrapper

For example if we import CardWrapper and call it like

 

<CardWrapper>
<View>

<Text>Something here to write</Text>

</View>
</CardWrapper>

So this.props.children will return all code inside <CardWrapper></CardWrapper>
component as children props. I will show you its use further in below code. It will be more clear for you

Styling Card Wrapper

Now we will add some styling to Card Wrapper. So create WrapperStyle

 

const Styles = {
    WrapperStyle: {
      borderWidth: 1,
      borderRadius: 2,
      borderColor: '#ddd',
      borderBottomWidth: 0,
      shadowColor: '#000',
      shadowRadius: 2,
      elevation: 5,
      marginLeft: 5,
      marginRight: 5,
      marginTop: 10
    }
};

Now we will add this style to CardWrapper component. So add this code in CardWrapper View

<View style={Styles.WrapperStyle}>
{this.props.children}
</View>

So final code will look like this

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

class CardWrapper extends Component {
 render() {
  return (
   <View style={Styles.WrapperStyle}>
    {this.props.children}
  </View>
  );
 }
}
const Styles = {
    WrapperStyle: {
      borderWidth: 1,
      borderRadius: 2,
      borderColor: '#ddd',
      borderBottomWidth: 0,
      shadowColor: '#000',
      shadowRadius: 2,
      elevation: 5,
      marginLeft: 5,
      marginRight: 5,
      marginTop: 10
    }
};

export default CardWrapper;

Creating Card Inner

Now open CardInner.js and start import component from react and react-native

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

class CardInner extends Component {
render() {
     return (
      <View>
      {this.props.children}
      </View>
    );
}
}

export default CardInner;

Now add style in same way as added for Cardinner component. So now add CardStyles

onst Styles = {
  CardStyles: {
    borderBottomWidth: 1,
    padding: 5,
    backgroundColor: '#FFF',
    justifyContent: 'flex-start',
    flexDirection: 'row',
    borderColor: '#ddd',
    position: 'relative'
  }
};

Now we will add Style to CardInner component View

<View style={Styles.CardStyles}>
  {this.props.children}
</View>

So final code will look like this

 

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

class CardInner extends Component {
  render() {
    return (
    <View style={Styles.CardStyles}>
       {this.props.children}
    </View>
    );
  }
}
const Styles = {
  CardStyles: {
    borderBottomWidth: 1,
    padding: 5,
    backgroundColor: '#FFF',
    justifyContent: 'flex-start',
    flexDirection: 'row',
    borderColor: '#ddd',
    position: 'relative'
  }
};
export default CardInner;

If you are eager 🙂 to check how this long CardWrapper and CardInner will look. So just import both in App.js file and this line for test

 

import CardWrapper from ‘./src/common/CardWrapper’;
import CardInner from ‘./src/common/CardInner’;

And add this test code inside view tag

 

<CardWrapper>

         <CardInner><Text>Title</Text></CardInner>

         <CardInner><Text>Image</Text></CardInner>

         <CardInner><Text>Play Button</Text></CardInner>

</CardWrapper>

 

 

Now refresh Simulator by pressing r button two times and it will show result

 

If it is working please remove recent code of import and CardWrapper and CardInner. We will use these designs later in listing

 

So it was a long Code but hope you understand following things

– How create component

– How Import other component

– How design a component

So our design is ready now we will use these cards to list youtube videos. So first we will select a playlist

© Copyrights 2014 by STW Services LLP