text prop umuz var, ve bu prop a herhangi bir ifade gönderilmediğini varsayalım, gönderilmediği için bir şey gösterilmez. Ama belli propları zorunlu kılabiliriz. bunun için isRequired ifadesini kullanılır.
import React from "react";
import { StyleSheet } from "react-native";
import { View, Text } from "react-native";
import PropTypes from "prop-types";
const Title = ({ isVisible, text, color, numberOfLines }) => {
return (
<>
<View>
{isVisible && (
<Text style={[styles.title, { color: color }]}>
{numberOfLines} - {text}
</Text>
)}
</View>
</>
);
};
const styles = StyleSheet.create({
title: {
fontSize: 30,
fontWeight: 700,
},
});
Title.propTypes = {
text: PropTypes.string.isRequired,
number: PropTypes.number,
color: PropTypes.string,
isVisible: PropTypes.bool,
};
Title.defaultProps = {
text: "Varsayılan Başlık",
isVisible: true,
color: "blue",
};
export default Title;
import { StyleSheet, View } from "react-native";
import Title from "./src/components/Title";
import User from "./src/components/User";
import Header from "./src/components/Header";
import Users from "./src/components/Users";
const App = () => {
return (
<View style={styles.container}>
<Header />
<Title number={1} numberOfLines={1} isVisible={true} />
<Title text="React" color="blue" number={2} numberOfLines={2} />
<Title text="JavaScript" color="green" number={3} numberOfLines={3} />
<User data={{ id: 1, name: "Mehmet" }} />
<Users data={["Ahmer", "Mehmet", "Ayşe", "Fatma"]} />
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: "center",
alignItems: "center",
},
});
export default App;
text ifadesi gönderilmese bile varsayılan olarak belirlediğim ifade ekrana basılacaktır.
default prop tanımlarını belirleyerek uyarı ve hataların önüne geçmiş oluruz.