๐ ์ค๋ต๋ฐ๋ ํ ์คํธ๋ฉ์ธ์ง์ ์ ์ฌํ ๊ธฐ๋ฅ์ ๋๋ค.
1.react-native-freelifemakers-ui NPM ๋ชจ๋ ์ค์นํ๊ธฐ
npm install react-native-freelifemakers-ui
2.Usage
1)Default SnackBar
import {
FlmSnackBarProvider,
useFlmSnackBar,
FlmText,
FlmButton,
} from 'react-native-freelifemakers-ui';
const FlmSnackBarApp = () => {
const {showSnackBar} = useFlmSnackBar();
return (
<View style={styles.content}>
<FlmButton
title="๊ธฐ๋ณธ SnackBar/Default SnackBar"
onPress={() => showSnackBar('๊ธฐ๋ณธ SnackBar ๋ฉ์์ง์
๋๋ค!')}
/>
</View>
);
}
export default function App() {
return (
<FlmSnackBarProvider>
<View>
<FlmSnackBarApp />
</View>
</FlmSnackBarProvider>
);
}
2)Custom FlmSnackBar
import {FlmSnackBar, FlmButton} from 'react-native-freelifemakers-ui';
export default function App() {
const [showCustomSnackBar, setShowCustomSnackBar] = useState(false);
const [snackBarMessage, setSnackBarMessage] = useState('');
const [snackBarType, setSnackBarType] = useState('info');
const handleShowCustomSnackBar = (message, type) => {
setSnackBarMessage(message);
setSnackBarType(type);
setShowCustomSnackBar(true);
};
return (
<View>
<FlmButton
title="์ปค์คํ
SnackBar/Cusom SnackBar"
onPress={() =>
handleShowCustomSnackBar('์ฌ์ฉ์ ์ ์ SnackBar', 'success')
}
/>
{showCustomSnackBar && (
<FlmSnackBar
message={snackBarMessage}
type={snackBarType}
duration={3000} // ์ง์ ์๊ฐ ์ค์ (3s) / time Time setting(3s)
onHide={() => setShowCustomSnackBar(false)}
// ์ปค์คํ
์คํ์ผ ์ถ๊ฐ /. adding custom style
style={{
backgroundColor: 'purple',
bottom: 100,
borderRadius: 20,
borderWidth: 2,
borderColor: 'white',
}}
textStyle={{
color: 'lightgreen',
fontWeight: 'bold',
}}
/>
)}
</View>
);
}
3.Full Code
1)Default SnackBar
// Default FlmSnackBar - Context API์ฌ์ฉ
import React from "react";
import { View, Text, Button, StyleSheet } from "react-native";
import {
FlmSnackBarProvider,
useFlmSnackBar,
FlmText,
FlmButton,
} from "react-native-freelifemakers-ui";
const FlmSnackBarApp = () => {
const { showSnackBar } = useFlmSnackBar();
return (
<View style={styles.content}>
<FlmText style={styles.title}>SnackBar (Default)</FlmText>
<FlmText>
ํ๋ผ๋ฉํฐ๊ฐ ์์ผ๋ฉด info๊ฐ ๊ธฐ๋ณธ SnackBarํ์
์ผ๋ก ์ง์ ๋ฉ๋๋ค.
</FlmText>
<FlmText>
If there is no parameter, the info is specified as the default snack bar
type.
</FlmText>
<FlmButton
title="๊ธฐ๋ณธ SnackBar/Default SnackBar"
onPress={() => showSnackBar("๊ธฐ๋ณธ SnackBar ๋ฉ์์ง์
๋๋ค!")}
/>
<View style={{ height: 10 }} />
<FlmButton
title="์ธํฌ๋ฉ์ด์
SnackBar/info SnackBar"
onPress={() =>
showSnackBar("์ธํฌ๋ฉ์ด์
SnackBar/info SnackBar", "info")
}
/>
<View style={{ height: 10 }} />
<FlmButton
title="์ค๋ฅ SnackBar / error SnackBar"
onPress={() => showSnackBar("์ค๋ฅ SnackBar/error SnackBar", "error")}
/>
<View style={{ height: 10 }} />
<FlmButton
title="์ฑ๊ณต SnackBar (2์ด) / success SnackBar(2s)"
onPress={() =>
showSnackBar(
"์ฑ๊ณต SnackBar(2s) / success SnackBar(2s)",
"success",
2000,
)
}
/>
</View>
);
};
export default function App() {
return (
<FlmSnackBarProvider>
<View style={styles.container}>
<FlmSnackBarApp />
</View>
</FlmSnackBarProvider>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#fff",
alignItems: "center",
justifyContent: "center",
},
content: {
alignItems: "center",
justifyContent: "center",
padding: 20,
},
title: {
fontSize: 24,
fontWeight: "bold",
marginBottom: 20,
},
});
2)Custom FlmSnackBar
// Custom FlmSnackBar
import React, {useState} from 'react';
import {View, Text, Button, StyleSheet} from 'react-native';
import {FlmSnackBar, FlmButton} from 'react-native-freelifemakers-ui';
export default function App() {
const [showCustomSnackBar, setShowCustomSnackBar] = useState(false);
const [snackBarMessage, setSnackBarMessage] = useState('');
const [snackBarType, setSnackBarType] = useState('info');
const handleShowCustomSnackBar = (message, type) => {
setSnackBarMessage(message);
setSnackBarType(type);
setShowCustomSnackBar(true);
};
return (
<View style={styles.container}>
<Text style={styles.title}>์ฌ์ฉ์์ ์ SnackBar</Text>
<Text style={styles.title}>Custom SnackBar</Text>
<FlmButton
title="์ปค์คํ
SnackBar/Cusom SnackBar"
onPress={() =>
handleShowCustomSnackBar('์ฌ์ฉ์ ์ ์ SnackBar', 'success')
}
/>
{showCustomSnackBar && (
<FlmSnackBar
message={snackBarMessage}
type={snackBarType}
duration={3000} // ์ง์ ์๊ฐ ์ค์ (3s) / Set time directly (3s)
onHide={() => setShowCustomSnackBar(false)}
// ์ฌ๊ธฐ์ ์ํ๋ ์คํ์ผ์ ์ง์ ์ฃผ์
ํ ์ ์์ต๋๋ค!
// You can add your own desired style here!
style={{
backgroundColor: 'purple',
bottom: 100, // ๋ ์๋ก ์ฌ๋ฆผ / move higher
borderRadius: 20,
borderWidth: 2,
borderColor: 'white',
}}
textStyle={{
color: 'lightgreen',
fontWeight: 'bold',
}}
/>
)}
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
title: {
fontSize: 24,
fontWeight: 'bold',
marginBottom: 20,
},
});
4.ScreenShot