์ ๋์ ์ผ๋ก ์๋ฆ๋ค์ด ๋์๊ด.
ํฅํ React-Native๋ก ์ด์ํ ๊ณํ์ด ์์ต๋๊น?
์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ฐฉ๊ธ ๋ฐ๊ฒฌํ์ต๋๋ค: https://github.com/lightningtgc/react-native-material-ui
๊ทธ๋๋ ์ข์์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค @chadobado - ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ํด ํ์คํ ์ด์ผ๊ธฐํ์ผ๋ฉฐ ์์ํ๋ ์ฌ๋ฏธ์๋ ํ๋ก์ ํธ๊ฐ ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ํ์ฌ ์ด ํ๋ก์ ํธ๋ก ๊ฐ๋ ์ฐจ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ๊ณ์ ์ด์ด๋๊ณ ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค๋ฉด ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค.
์ด๊ฒ์ ์ค์ ๋ก ์ข์ ์์ด๋์ด์
๋๋ค. material-ui
๋ฅผ React-Native๋ก ์ด์ํ๋ ํ
์คํธ๋ฅผ ์๋ํ์ต๋๋ค. ์คํ์ผ์ํธ๋ฅผ ์ฝ๊ฐ๋ง ๋ณ๊ฒฝํ๊ณ ๋ชจ๋ div
์ View
, ๋ชจ๋ h1
, h2
๋ฑ์ Text
ํ๊ณ ๊ทธ๊ฒ์ ์ ์๋ํฉ๋๋ค. ๋ด๊ฐ ์ฐพ์ ์ ์ผํ ๋ฌธ์ ๋ React Native๊ฐ boxShadow
์์ ํ ์ง์ํ์ง ์์ ํ์ฌ Paper
๊ตฌ์ฑ ์์๋ฅผ ๊ตฌํํ๊ธฐ ์ด๋ ต๋ค๋ ๊ฒ์
๋๋ค. ๋ํ ์ฝ๋๊ฐ ํฌ๊ฒ ๋ค๋ฅด์ง ์๊ธฐ ๋๋ฌธ์ React-Native๋ก ์ฝ๋๋ฅผ ์๋ ์ด์ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ํ๋ฅญํ๊ฒ ๋ง๋ค ์ ์๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค.
๋ชจ๋ div๋ฅผ View๋ก ๋ณ๊ฒฝํ๊ณ ๋ชจ๋ h1, h2 ๋ฑ์ Text๋ก ๋ณ๊ฒฝํ๋ฉด ์ ์๋ํฉ๋๋ค.
babel-plugin-transformer๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํ ์ ์์ต๋๊น?
์ด๊ฒ์ ์ค์ ๋ก ์ข์ ์์ด๋์ด์ ๋๋ค
๋ฐ๋ชจ ํ๋ก์ ํธ๊ฐ ์์ต๋๊น?
@oliviertassinari
babel-plugin-transformer๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํ ์ ์์ต๋๊น?
React Native์ ์คํ์ผ์ํธ๊ฐ CSS์ ์๋นํ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ํธ๋์คํฌ๋จธ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์๋นํ ๋ณต์กํ ๊ฒ์ ๋๋ค.
๋ฐ๋ชจ ํ๋ก์ ํธ๊ฐ ์์ต๋๊น?
์์ง๊น์ง๋ '๋ฐ์์ง๋ง ๊ณง ์์ ๋ฐ๋ชจ๋ฅผ ๋ณด์ฌ๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค.
ํ์ง๋ง ์ฌ๊ธฐ ์ฐ๋ฆฌ๊ฐ ํด์ผ ํ ์ผ์ด ์์ต๋๋ค
์คํ์ผ์ํธ
let styles = {
root: {
zIndex: 5,
width: '100%',
display: '-webkit-box; display: -webkit-flex; display: flex',
minHeight: themeVariables.height,
backgroundColor: themeVariables.color,
paddingLeft: spacing.desktopGutter,
paddingRight: spacing.desktopGutter,
}
}
์๊ฒ
let styles = StyleSheet.create({
root: {
// zIndex: 5, (not supported)
//width: '100%', (number only)
//display: '-webkit-box; display: -webkit-flex; display: flex', (React Native always use Flex)
minHeight: themeVariables.height,
backgroundColor: themeVariables.color,
paddingLeft: spacing.desktopGutter,
paddingRight: spacing.desktopGutter,
}
})
JSX
<div {...other} style={this.prepareStyles(styles, style)}>
<h1 style={styles.text}>Hello world</h1>
</div>
์๊ฒ
<View {...other} style={this.prepareStyles(styles, style)}>
<Text style={styles.text}>Hello world</Text>
</View>
์ฐ๋ฆฌ๋ ๋ํ ์์ ํด์ผ styles/transition.jsx
(๋ฐ์์ฉ ๊ธฐ๋ณธ ์ฌ์ฉ object
๋์ string
) mixins/style-propable.jsx
์ฐ๋ฆฌ๋ ์ฌ๋ฌ ๋ธ๋ผ์ฐ์ ๋ฑ์ ์ฒ๋ฆฌ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์
https://github.com/lenaten/material-ui-native ์์ react-native๋ก WIP ๋ถ๊ธฐ๋ฅผ ๊ฒ์ํ์ต๋๋ค
ํ์ฌ๋ ์นด๋์ RaiseButton๋ง ์๋ํ์ง๋ง ์คํ์ผ์ ์์ต๋๋ค(WIP ๊ธฐ์ตํ์๋์?)
@lenaten ์ฌ๋ฏธ์๋ค!
๋ํ ์ด ํ๋ก์ ํธ์ mrn(https://github.com/oliviertassinari/react-material) ์ฌ์ด์ ๋ํผ ์์
์ ์์ํ๊ณ ์ถ์์ต๋๋ค.
ํฌํฌ๊ฐ ๋ฐ์ ๋ค์ดํฐ๋ธ์์๋ง ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์์๋ ์๋ํ๊ฒ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํ์๊ฒ ์ต๋๊น?
๋ ๊ฐ์ง ์์
๊ตฌ์ฑ ์์๊ฐ ์๋ค๊ณ ๋ง์ํ์
จ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ์ด๋ ค์ด ์ ์ด๋ฉฐ ์ง๊ธ ํด๊ฒฐํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋น์ ์ด ์ํ๋ค๋ฉด ๋ด๊ฐ ๋์ธ ์ ์์ต๋๋ค.
์ด์ ์ ๋งํ๋ฏ์ด ์ ๋ ๋ํ ๊ธฐ๋ณธ ๊ตฌํ์ ์ํด https://github.com/binggg/mrn ์ ์กฐ์ฌํ๊ณ ์ถ์์ต๋๋ค.
๋ต๋ณ์ด ์ค๋ฉด ์ฌ๊ธฐ์์ ํฌํฌ๋ฅผ ๋ค์ ๋ณํฉํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
Material-UI๋ ๋ง์ ๋จธํฐ๋ฆฌ์ผ ์ปดํฌ๋ํธ๋ฅผ ๋์น๋ mrn ํ๋ก์ ํธ์ ๋ํ ์ฑ์ํ ํ๋ก์ ํธ์ ๋๋ค. ๋ด POC๊ฐ ์์ธ์ ์ผ๋ก ์๋ํ๋ฉด ํ๋ซํผ ๊ฐ ํ์ผ ๊ตฌ์กฐ์ ๋ณํฉํ๊ธฐ๊ฐ ์ฌ์์ผ ํฉ๋๋ค. ๋ฐํด๋ฅผ ์ฌ๋ฐ๋ช ํ๊ณ ์ฒ์๋ถํฐ ํ๋ก์ ํธ๋ฅผ ์์ํ ์๊ฐ์ด ์์ต๋๋ค.
์ด์จ๋ , ์๊ฐ๊ณผ ์ฝ๋์ ๋ํ ๋น์ ์ ๋์์ ๋งค์ฐ ํ์ํฉ๋๋ค.
@oliviertassinari ์ ๋์.
material-ui
๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ค์ดํฐ๋ธ ๋ชจ๋์์ ์๋ํ๋๋ก ํ๋ ์ ์์ด๋์ด๋ react-active
๊ฐ iOS์ Android๋ฅผ ๋์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํ ํ์ผ ์ด๋ฆ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.
app-bar.native.jsx
app-bar.browser.jsx
common.jsx
๋๋ ๋ธ๋ผ์ฐ์ ์ ๋ค์ดํฐ๋ธ ๋ชจ๋์ โโ๋์ผํ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ ๋ค์ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ํผ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด react-native
๋ View
๋ฅผ ์ฌ์ฉํ๊ณ ๋ธ๋ผ์ฐ์ ๋ div
๋ค์๊ณผ ๊ฐ์ด ์ํํฉ๋๋ค.
div.browser.jsx
export class ... {
render() {
return </div>
}
}
div.native.jsx
export class ... {
render() {
return </View>
}
}
์ฑ ๋ฐ.jsx
import {div} from "div"
์ค์ ๋ก ์ด ๋ํผ์ ๋ํด ๋ณ๋์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
@quanglam2807 ๋ฐ๊ฐ์ต๋๋ค.
์ฝ๋ ๊ตฌ์ฑ๊ณผ ๊ด๋ จํ์ฌ ๋๋ ๋ณ๋์ ํ์ผ ํ์ฅ์๋ฅผ ๊ฐ๋ ์์ด๋์ด๋ฅผ ์ข์ํฉ๋๋ค.
๋๋ ๊ทธ๊ฒ์ ํ ๋ฐฉ๋ฒ์ผ๋ก https://github.com/benoitvallon/react-native-nw-react-calculator/tree/master/src/common/components ์์ ๋ฅผ ์ทจํ ๊ฒ์
๋๋ค.
ํ๋ก์ ํธ ๊ตฌ์ฑ๊ณผ ๊ด๋ จํ์ฌ ์๊ฐ์ด ๋ฐ๋์์ ์ ์์ต๋๋ค.
Google์ ์ ๊ทผ ๋ฐฉ์์ ๋ฐ๋ผ ํฐ ๋จ์ผ ์ ์ฅ์์์ ์์
ํ๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ material-ui ๋๋ ์ฌ๊ธฐ์์ ํฌํฌ ๋๊ธฐํ ์์
์ ํ๋ ๊ฒ์ด ์ข์ ๋ฐฉ๋ฒ์ด ๋ ์ ์์ต๋๋ค.
.native
ํ์ผ๋ก ์์ํ๋ ค๋ฉด ๋ค์ ํญ๋ชฉ์ ์์กดํ ์ ์์ต๋๋ค.
๊ตฌ์ฑ ์์.
@oliviertassinari ์ ๋ "ํ์ผ ํ์ฅ์" ๋ชจ๋ธ์ด๋ผ๋ ์์ด๋์ด๋ฅผ ์ข์ํฉ๋๋ค. ์ง๊ธ ๋์๊ฒ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์๋ฅผ ์๋ํ๋ ๊ฒ์ ๋๋ค. ์ฝ๋ ์ถ์ํ๋ฅผ ๋๊ณ ์ถ๋ค๋ฉด ํ์ํฉ๋๋ค. ๋๋ repo ์ด๋ฆ์์ "๋ค์ดํฐ๋ธ"์ ๋ฏธ์ฌ๋ฅผ ์ ๊ฑฐํ๊ธฐ๋ก ์ฝ์ํฉ๋๋ค. :)
@lenaten ์ material-ui-native๊ฐ tcomb-form-native์ ํธํ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ์ผ๋ง๋ ํฐ ํ๋ก์ ํธ๊ฐ ๋ ๊น์?
@mvayngrib ํ๋์ ์ด ํ๋ก์ ํธ ์์ ์ ์ค๋จํ์ต๋๋ค..
@lenaten ์ฃ์ก ํฉ๋๋ค ๋ต๋ณํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค
์ข์, ๋๋ https://github.com/callemall/material-ui/pull/2611 ์์ ์์
์ ์์ํ์ต๋๋ค
์๊ฐ์ด ์ข ๊ฑธ๋ฆฝ๋๋ค!
@oliviertassinari ๊ต์ฅํฉ๋๋ค! ๋งค์ฐ ๋งค์ฐ ํฅ๋ถ
๊ทธ๋์ ํญ๊ตฌ ๋ ธ๋ ฅ์ ์ฌ์ ํ โโ์ด๋ ค ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ๊ตฌ์ฑ ์์๋ฅผ ๊ตฌํํ๋ ํ๋ก์ธ์ค๋ ์ด๋ป๊ฒ ๊ฒฐ์ ๋์์ต๋๊น?
@dorthwein ์์ง ์ด๋ ค ์์ต๋๋ค.
๋ด ๊ด์ ์์ ํ๋ก์ธ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
muiTheme
๋ํด ์ผ๋ง๋ ์ ์ฌ์ฉํ ์ ์๋์ง ํ์ธํ์ญ์์ค. https://github.com/callemall/material-ui/pull/3829@oliviertassinari - ์์ผ๋ก ๋ฐฉ๋ฒ์ด ์ค์ ๋๋ฉด ์ผ๋ถ ๊ตฌ์ฑ ์์๋ฅผ ์ด์ํ๋ ๋ฐ ์ฝ๊ฐ์ ์๊ฐ์ ํ ์ ํ ์ ์์ต๋๋ค. ๋น์ ์ ๋ชฉ๋ก์ ๋ณด๋ฉด ์ง๊ธ ์ ์ผํ๊ฒ ์๋ ค์ง์ง ์์ ๊ฒ์ด ๋ฐ์ ๋ชจ์์ ๋ฌผ๊ฑด ๋ง์ต๋๊น?
@dorthwein ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ฃ๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค.
์ฌ๊ธฐ #3829์์ react-look์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ด๊ฐ ๊ฐ์ง ์ ์ผํ ๋ฌธ์ ๋ ์ฌ์ํ ๋ฌธ์ ์
๋๋ค. React Native๋ StyleSheet
API์ ์๋ชป๋ ์ฌ์ฉ์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค. ์์ธํ ์ดํด๋ณด์ง ์์์ง๋ง ํด๊ฒฐ๋ ์ ์์ ๊ฑฐ๋ผ ๋ฏฟ์ต๋๋ค.
@oliviertassinari @dorthwein ์ด ๋
ธ๋ ฅ( material-ui
์ react-native
๊ฐ์ ธ์ด)์ด ์ฃฝ์ง ์์๋ค๋ ์ฌ์ค์ ๊ธฐ์ฉ๋๋ค . ์ด ์ค๋ ๋์์ ์ธ๊ธ๋์ง ์์ ๋ ๋ค๋ฅธ ์๋ก์ด material-ui
to react-native
ํ๋ก์ ํธ๊ฐ ์์์ ์ง์ ํ๊ณ ์ถ์์ต๋๋ค. https://github.com/react-native-material- design/react-native-material-design . ํด๋น ํ๋ก์ ํธ๋ https://github.com/binggg/mrn์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฒ ๊ฐ์ต๋๋ค
@oliviertassinari ์ด ํฌํธ์ ๋ํด iOS ์ง์์ด ํ๋นํ์ง ๋ค๋ฅธ ์ค๋ ๋์์ ๋ณด์์ต๋๋ค. ํนํ Google ์ง๋ ๋ฐ ๊ธฐํ Google Material + iOS ์ฑ์ด ์ด๋ป๊ฒ ์ ๊ณต๋๋์ง ๋ณผ ๋ ํนํ ๊ทธ๋ ์ต๋๋ค. ์๋ฏธ๊ฐ ์๊ณ ๊ฐ๋ ฅํ ๊ธฐ์กด iOS ๊ตฌ์ฑ ์์(์: ์ค์์น)๊ฐ ์๋ ๊ฒฝ์ฐ iOS์ iOS ์ค์์น์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. Android ๋ฐ iOS๋ฅผ ๊ตฌํํ๋ ๊ฒ๋ ํฐ ๋ถ๋ด์ด ์๋๋๋ค.
@oliviertassinari ์ญ์ component.native.js, component.android.js, component.ios.js ํ์ผ ๊ตฌ์กฐ๊ฐ ๊ฐ์ฅ ์ดํด๊ฐ ๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
@oliviertassinari ๋ฌธ์๋ฅผ ๊ฐ์ ธ
@dorthwein ํผ๋๋ฐฑ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๋ฐ์ ๋ค์ดํฐ๋ธ ๋ธ๋์น๋ ๊ณ ๋๋ก ์คํ์ ์
๋๋ค. ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
๋ฐ๋ฉด์ ์ ๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค(https://github.com/callemall/material-ui/pull/3829).
์๋ก์ด git clone
์์ ์์ํด์ผ ํฉ๋๋ค.
๋ค, ํ์ฌ ํ๋ก์ ํธ์ ๋ค์ ๋จ๊ณ๋ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ์ ์ฌ์ฉํ๋ ๋ชจ๋ฐ์ผ ์ฑ์์ ์์ ํ๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ์ ๋ชจ๋ ์น ํญ๋ชฉ๋ ์ฌ๊ธฐ์ ์์ผ๋ฏ๋ก ์ด๊ฒ์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค. ์์ ํ๊ฒฝ์ ํ๋ณดํ ์ ์๋ค๋ฉด ํ๋ก์ ํธ์ ํจ๊ป ์์ ํ๊ฒฝ์ ์ข ๋ฃํ ๊ฒ์ ๋๋ค.
๋ช ๊ฐ์ง ์ ๋ณด๋ฅผ ์ฝ๊ณ FB React ๊ธฐ๋ณธ ํ์ด์ง์์ ์ด ๊ฐ๋จํ ์ ๋ณด๋ฅผ ํ์ธํ์ต๋๋ค.
"UI ๊ตฌ์ถ์ ์ํ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์ฑ ์์์ธ View๋ flexbox, ์คํ์ผ, ์ผ๋ถ ํฐ์น ์ฒ๋ฆฌ ๋ฐ ์ ๊ทผ์ฑ ์ปจํธ๋กค์ด ์๋ ๋ ์ด์์์ ์ง์ํ๋ ์ปจํ ์ด๋์ด๋ฉฐ ๋ค๋ฅธ ๋ทฐ ๋ด๋ถ์ ์ค์ฒฉ๋๊ณ ๋ชจ๋ ์ ํ์ ์์์ด 0๊ฐ ์ด์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. UIView์ด๋ ์๊ด์์ด React๊ฐ ์คํ๋๋ ํ๋ซํผ์ ์๊ด์์ด ๊ธฐ๋ณธ ๋ณด๊ธฐ์ ์ง์ ๋งคํ๋ฉ๋๋ค.
์ถ์ฒ: https://facebook.github.io/react-native/docs/view.html
์ด์ ๋น์ถ์ด ๋ณผ ๋ div๋ฅผ ๋ณด๊ธฐ๋ก ์ ํํ์ฌ ์ผ๋ฐ ์์ ์ ์๋น ๋ถ๋ถ์ ์ํํ ์ ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ํ์ฌ ์ ๊ทผ ๋ฐฉ์์ ์ฝ๊ฐ ๋ค๋ฅผ ์ ์์ต๋๋ค. ํค๋ ๋ฐ ๊ธฐํ ๊ด๋ จ ํ๊ทธ๋ ๋ณด๋ค ๋ณดํธ์ ์ธ ๋ฐฉ์์ผ๋ก ๋งคํ๋์ด์ผ ํฉ๋๋ค.
์๊ฐ?
์ด ๋ฆฌ์์ค๋ ์ฐพ์์ต๋๋ค. ์ง๊ธ ์ฌ์ฉํด ๋ณด์ธ์. ๊ฝค ์ง์ ์ ์ด๋ฉฐ ํ ๋ฒ ์ดํด๋ณผ ๊ฐ์น๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
@dorthwein ์ข์ ์๊ฐ์ ๋๋ค! ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ์ด ๊ธธ์ ๊ฐ๋ค๋ฉด React Native ์ ์ฉ ๋ฒ์ ์ ๊ฐ๋ฐํ๋ ๊ฒ์ด ๋ ๋์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ค์ดํฐ๋ธ ๋ฐ DOM์ ๋ํ ๋ณ๋์ ์ฝ๋ ๋์ React ๋ค์ดํฐ๋ธ API์์ ์ ์ฒด ํ๋ก์ ํธ๋ฅผ ๋ค์ ์์ฑํ ์ ์์ต๋๋ค. ๋๋ผ์ด! ๋๋ ์ด๊ฒ์ ๋ํด ์๊ฐํด ๋ณธ ์ ์ด ์์ต๋๋ค.
@quanglam2807 ๋ค - ๊ทธ๋ฐ ์์ผ๋ก ์๋ก์ด ๊ธฐ๋ฅ ๋ฑ... ์๋ก์ ๋ผ์ธ์ ์ ์งํ์ญ์์ค. ๋ด๊ฐ ์๊ฐํ๋ ๊ฐ์ฅ ํฐ ๋์ ์ ์คํ์ผ๊ณผ ์ ๋๋ฉ์ด์ ์ด ์๋ํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ๋ํ ๋ค๋ฅธ ํฐ ์ฅ์ ์ ๋ค๋ฅธ ๊ตฌ์ฑ ์์์ ๋ํ ์ง์์ ์ ์ง์ ์ผ๋ก ์ถ๊ฐํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
๋จ์ ์ ๋ชจ๋ ๊ฒ์ด ํ๋ ์ค ๋ฐ์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ด ์ฝ๋ ๊ธฐ๋ฐ์ ์ฃผ์ ๋ฆฌํฉํ ๋ง์ด๋ผ๋ ์ ์ ๊ฐ์ํ ๋ - ์์ผ๋ก ์งํํ๋ ค๋ฉด ๋ชจ๋ ๋๊ฐ ์ด ์์ ์ ์๋ช ํด์ผ ํฉ๋๊น? ๋๋ ์ฌ์ ํ ๋์๋ณด๊ณ react-native-web ํญ๋ชฉ์ด ์ผ๋ง๋ ๊ฐ๋ ฅํ์ง ํ์ธํด์ผ ํฉ๋๋ค.
@quanglam2807 @oliviertassinari ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ ๋ค๋ฅธ ์ด์ ์ material-ui๊ฐ https://github.com/ptmt/react-native-desktop ์ผ๋ก๋ ์ฝ๊ฒ ์ด์๋๋ค๋ ๊ฒ์ ๋๋ค.
@oliviertassinari ๋ ์ด ํ๋ก์ ํธ์ ๋ฉ์ธํ ์ด๋๊ฐ ์์๋๋ก ์๋ํ๋ฉด ๋ค์ฒ์ง ์ ์๋ react-native-web์ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
@dorthwein ์ด ํ๋ก์ ํธ์ ์์ด๋์ด๊ฐ ๋ง์์
react-native-web
์ฌ์ฉํ๊ธฐ ์ ์ ๋จผ์ ๊ธฐ๋ณธ ๋ฒ์ ์ ๊ตฌ์ฑ ์์๋ฅผ ์์ฑํด์ผ ํ์ง ์์ต๋๊น?
@oliviertassinari ์๋์, react-native-web์ด ํ๋ ์ผ์ ํ๋ซํผ์ ๋ฐ๋ผ ๊ฐ์ฅ "๋ค์ดํฐ๋ธ" ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด View ํ๊ทธ๊ฐ ์ฃผ์ด์ง๋ฉด ๋ธ๋ผ์ฐ์ ์์๋ div๋ฅผ, iOS์์๋ UIView๋ฅผ ์ฌ์ฉํ๊ณ UIView์ ๋๋ฑํ ๊ฒ์ Android๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ํ๋ก์ธ์ค๋ ๊ฐ ๊ตฌ์ฑ ์์์ ๊ธฐ๋ณธ ๋ฒ์ ์ ์์ฑํ๋ ๋์ h1 ๋ฐ ๋ ์ด๋ธ๊ณผ ๊ฐ์ ํญ๋ชฉ์ ์ฌ์ฉํ๋ ๋์ div ๋ฐ ์คํ์ผ ํ ์คํธ ๋์ ๋ณด๊ธฐ๋ฅผ ์ฌ์ฉํ๋๋ก ๊ธฐ์กด ๋ฒ์ ์ ๋ณํํด์ผ ํฉ๋๋ค.
ํ์คํ ์์ ์์ ์ ์๋์ง๋ง ํ๋ก์ธ์ค๋ ์ฌ๋ฌ ๋ฒ์ ์ ๋ง๋ค๊ณ ์ ์ง ๊ด๋ฆฌํ๋ ๋์ ๊ธฐ์กด ๊ตฌ์ฑ ์์๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ํ๋ก์ธ์ค๋ ๊ฐ ๊ตฌ์ฑ ์์์ ๊ธฐ๋ณธ ๋ฒ์ ์ ์์ฑํ๋ ๋์ h1 ๋ฐ ๋ ์ด๋ธ๊ณผ ๊ฐ์ ํญ๋ชฉ์ ์ฌ์ฉํ๋ ๋์ div ๋ฐ ์คํ์ผ ํ ์คํธ ๋์ ๋ณด๊ธฐ๋ฅผ ์ฌ์ฉํ๋๋ก ๊ธฐ์กด ๋ฒ์ ์ ๋ณํํด์ผ ํฉ๋๋ค.
๊ทธ๊ฒ์ ๋ธ๋ผ์ฐ์ ์์๋ ์๋ํ๋ ๋ค์ดํฐ๋ธ ๋ฒ์ ์ ์์ฑํ๋ ๊ฒ๊ณผ ์ ํํ ๊ฐ์ต๋๋ค. ๋ด๊ฐ ์๋ ํ react-native-web
๋ ์น์ ๊ธฐ๋ณธ ๋ฐ์์ ๊ฐ์ ธ์ค๊ณ ๊ทธ ๋ฐ๋๋ ์๋๋๋ค.
๊ทธ๋๋ ๋์ผํ ์ฝ๋๋ฅผ ๊ณต์ ํ๋ ๊ฒ์ ์ ๋ง ํธ๋ฆฌํ ์ ์์ต๋๋ค :+1:.
๋๋ ์ง๊ธ๊น์ง ์ด lib์ ๋ํ ํ๋์ ์์ ๋ฌธ์ ๋ฅผ ๋ณด์์ต๋๋ค. ๊ทธ๋ค์ StyleSheet.create
๊ตฌํ์ ๋์ ๊ฐ์ ์ง์ํ์ง ์์ต๋๋ค(muiTheme์ ํ์ํจ). ์ด ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ๋ฐ์ ๋ณด๊ธฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@oliviertassinari ๋น์ ์ ๊ถ๋ฆฌ - ๋๋ ๊ทธ๊ฒ์ ๊ฑฐ๊พธ๋ก ์ดํดํ๊ณ ์์์ต๋๋ค. 1๋จ๊ณ๋ ์ฌ์ ํ ์ปดํฌ๋ํธ์ ๋ฐ์ ๋ค์ดํฐ๋ธ ๋ฒ์ ์ ๊ตฌ์ถํ๋ ๊ฒ ๊ฐ์ต๋๋ค. 2๋จ๊ณ๋ ์ ์ฌ์ ์ผ๋ก ๋ฐ์ ๋ค์ดํฐ๋ธ ์น๊ณผ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ์ฌ ๋จ์ผ ์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ๋ณํฉํ๋ ๊ฒ์ ๋๋ค.
@wordyallen : ์์๊น ๐
@pgangwani ์ด์ ๋ง ํ๋๋ฐ ... ์์ง ์ค๋น๊ฐ ์๋์ด.
๋๋ ๊ฒฉ์ฐจ๋ฅผ ์ฑ์ฐ๊ธฐ ์ํด https://github.com/react-native-material-design/react-native-material-design ์ ์ฌ์ฉํ์ง๋ง ๊ฐ์ฅ์๋ฆฌ ์ฃผ๋ณ๋ ๋งค์ฐ ๊ฑฐ์น ๊ณ ์ ๊ทน์ ์ธ ๊ฐ๋ฐ์ด ์์ต๋๋ค.
ํ ์๋ง ์๋ค๋ฉด ์ด ๋ ธ๋ ฅ์ ์ฌ์ ์ ์ผ๋ก ๊ธฐ๋ถํ ๊ฒ์ ๋๋ค.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
์ ๋ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์๊ฐ์ ๋ฐ์ react-native-material-ui ์์ ์์ ํฉ๋๋ค. ์์ ๋กญ๊ฒ ์๋ํ์ญ์์ค - ํผ๋๋ฐฑ์ ๋ฃ๊ณ ์ถ์ต๋๋ค ;)
@xotahal et. al, IMHO๋ ์ฒ์๋ถํฐ ์๋ก ๋ง๋๋ ๋์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํฌํ๊ณ ๊ธฐ์กด ๊ตฌ์ฑ ์์๋ฅผ ๋ค์ ๋ง๋๋ ๋์ ์ด์ํ๋ ๊ฒ์ ๋๋ค. ๋์๊ฒ ๋ฌป๋๋ค๋ฉด ์ฌ๋ฃ ์คํ์ผ ์ ๋ ฅ์ ํ์์ฑ์ RN ๊ณต๊ฐ์์ ์ ์คํ ํ์ํฉ๋๋ค. OSS ๋ ธ๋ ฅ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ผ๋ฐ์ ์ธ ์ฝ๋๋ ๋ง์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฒ์๋ถํฐ ๋ง๋๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. RN์ ์คํ์ผ๋ง์ ์ด๊ฒ๊ณผ 90% ๋ค๋ฆ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋๋ฉ์ด์ ๊ณผ ๊ฐ์ ํ๋ซํผ๋ณ ๋ฉ์ปค๋์ฆ์ด ๊ฝค ์์ต๋๋ค...
๊ตฌ์ฑ ์์ ๊ตฌ์กฐ, ์ํ(๋ฐ ๋ฌธ์)์ ์ฑํํ๊ณ ๋ง์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋๋ผ๋ ๋ช ํํ ์ ์คํธ๋ฆผ์ ๊ฐ๋ ๊ฒ์ ์น์์ ๋ค์ดํฐ๋ธ๋ก ์๋ค๋ก ์ด๋ํ๋ ์ฌ๋๋ค์๊ฒ ์ฅ๊ธฐ์ ์ผ๋ก ์ ์ตํ ๊ฒ์ด๋ฉฐ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ๋๋จธ์ง๋ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ด ๋ฉ๋๋ค.
@jhabdas์ ๋์ํฉ๋๋ค. API๊ฐ ๊ฐ ๊ตฌ์ฑ ์์๋ฅผ ๋ ์ ์ฌํ๊ฒ ์ฐพ์์๋ก ๊ฐ๋ฐ์๊ฐ ์น ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ํ๋ก์ ํธ์์ ์ ํํ๋ ๊ฒ์ด ๋ ๊ฑฐ์ฌ๋ฆฌ๊ฒ ๋ฉ๋๋ค. ๋ ๊ฑฐ์ฌ๋ฆฌ๋ ๊ฒฝํ์ผ์๋ก ๋ ์์ฐ์ ์ผ ์ ์์ต๋๋ค. ํ๋ซํผ๋ณ ์ธ๋ถ ์ ๋ณด๊ฐ ๊ตฌ์ฑ ์์์ ๋ฐฐํ์์ ์ถ์ํ๋๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
@chadobado ๋๋ ์ ์ง ๊ด๋ฆฌ์, ์ด
FWIW, ์ด๊ฒ์ด ๋ด ๋์ ์ฌ๋ก ์ก์์ต๋๋ค.
react-native-material-kit
์ ๋ํ ์น ์ง์์ @necols :
React Native์ ์น ๊ตฌํ์์ ํธํ์ฑ์ผ๋ก Stylesheet๊ฐ ์ ๊ณต๋๋ค๋ฉด ๋ง์ ๊ฒ์ ์ด์ํ ํ์๊ฐ ์์ ๊ฒ์ ๋๋ค.
@jhabdas ๋ค์ดํฐ๋ธ ๋ฐ์์ผ๋ก ์กฐ๊ธ ํ๋ ์ดํ๋ฉด ๊ทธ๋ ๊ฒ ๊ฐ๋จํ์ง ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. StyleSheet API๋ ํ๋ฅญํ์ง๋ง ๊ฝค ๋ง์ ๊ฒ์ ๋ค์ ์์ฑํด์ผ ํฉ๋๋ค ;)
ํ์ด ํฌ์ธํธ @antoinerousseau. ์ ๋ RN์ ๋ํ James Long์ ์ธ์ฉ๋ฌธ์ ๊ณ์ ์๊ฐํฉ๋๋ค.
์น์ ๋ค๋ฅธ ๋ฐฉํฅ์ ์ํ ํ๋กํ ํ์ ์ผ๋ก ์๊ฐํ์ญ์์ค.
@necolas ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ชฉ์ ์ ์ดํดํ๊ณ ์๋ค๋ฉด ๋ฌธ์ ๋ฅผ ์ญ์ ์ํค๋ ๊ฒ์ด ์ ์ ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ธ ๊ฒ ๊ฐ์ต๋๋ค. CSS๋ฅผ RN์ผ๋ก ์ด์ํ๋ ๋์ RN์์ ์ ์ฒด๋ฅผ ์ฌ๊ตฌ์ถํ๊ณ shim์ ์ฌ์ฉํ์ฌ ์น์ฉ ๋ฐฑ ํฌํธ๋ฅผ ๋ฐฑํฌํธํฉ๋๋ค. React Native Material Kit๋ ์ด๋ฏธ ๋ฌธ์ ์ ๋ํ ์ข์ ์ ํ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
react-native-web
๊ฐ ๋ฉ์ง ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ ๋ ์ ๊ฐ์ธ ํ๋ก์ ํธ์ material-ui.android.js
, material-ios.ios.js
, material-ui.web.js
ํ์ผ์ ๋ง๋ค๊ณ ์ข์ ์ด๋ฆ์ผ๋ก ๋ถ๋ฅด๊ฒ ์ต๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ๋ํํ์ฌ material-ui
API๋ฅผ ๋ฐ๋ฅด๋ฉด ๊ฒฐ๊ตญ ์๋ํฉ๋๋ค. ๊ฒฝ์ฐ material-ui
๋๋ฅผ ๋๋ผ๊ฒ ๊ทธ๋ฅ ์๋, ๋ ๋จ์ง ์ ๊ฑฐํด์ผํฉ๋๋ค .web
์ผ๋ก๋ถํฐ .web.js
๋ค๋ฅธ ํ์ผ์ ์ญ์ . ์ด๋ ๊ฒ ํ๋ฉด ๊ตฌ์ฑ ์์๋น material-ui
์ ํ์ ์ผ๋ก ์ ํํ ์ ์์ต๋๋ค.
@oliviertassinari ๊ทธ๋์ react-native
๋ถ๊ธฐ๋ฅผ NPM ์ข
์์ฑ์ผ๋ก ์ถ๊ฐํ๊ณ ๋ชจ๋ Babel ํ๋ฌ๊ทธ์ธ์ ์ค์นํ์ต๋๋ค. ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ์ ธ์ฌ ๋ ๋ค์ ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค.
EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.
๋ด ๋ชฉํ๋ material-ui
๊ตฌ์ฑ ์์๋ณ๋ก ์คํ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ๋ฌผ๋ก ์ ๋ git rebase master
ํ๊ณ git rebase next
ํ์ด์ผ ํ์ต๋๋ค. ๋ชจ๋ ๊ฐ๋ณ react-native
๊ตฌ์ฑ ์์๊ฐ ์ง๊ธ next
์ง์ ์์
์ค๋น๋ก ์ธํด ์ฐจ๋จ๋์ด ์์ต๋๊น?
๊ทธ๋ฆฌ๊ณ material-ui
์์ด์ฝ์ ์๋นํ๋ ๊ฒ๊ณผ ๋๊ฐ์ ๋ฐฉ์์ผ๋ก react-native-vector-icons
๋ฅผ ์๋นํ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ์ต๋๋ค.
// <strong i="19">@flow</strong>
import React from 'react'
import {
Text,
View
} from 'react-native'
import Mui from './app/material-ui'
import Icons from './app/material-ui/icons'
export default React.createClass({
render: function() {
return (<View>
<Icons.AccountCircle />
<Mui.IconAccountCircle />
</View>)
}
})
ํ์ฌ react-native-vector-icons
๋ฐ material-ui
์๋ ํธํ๋์ง ์๋ ๊ฐ์ ธ์ค๊ธฐ ๊ตฌ๋ฌธ์ด ์์ต๋๋ค. @oblador glyphMap
๋ฅผ ๊ฐ์ ธ์์ ๋ฐ๋ณตํ๊ณ ์ ์ฒด ๋ชฉ๋ก์ ํ๋์ ํฐ ๊ฐ์ฒด๋ก ๋ด ๋ณด๋ด์ผ ํ์ต๋๋ค.
import { glyphMap } from 'react-native-vector-icons/MaterialIcons'
react-native-vector-icons
๋จธํฐ๋ฆฌ์ผ ์์ด์ฝ์ด material-ui
์ ๊ฐ์ ์นดํ
๊ณ ๋ฆฌ๋ณ๋ก ๊ทธ๋ฃนํ๋์ด ์นดํ
๊ณ ๋ฆฌ ๋ด์์ ๊ฐ๋ณ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ํ์ฉํ๋ฉด ์ข์ ๊ฒ์
๋๋ค.
import ActionHome from 'material-ui/svg-icons/action/home'
react-native-vector-icons
๊ฐ material-ui
๊ฐ์ ธ์ค๊ธฐ ๊ท์น๊ณผ ํธํ๋๋๋ก pull ์์ฒญ์ ํด์ผ ํฉ๋๊น?
@mattferrin react-native
์ง์ ์ ์ด์ ๊ฝค ์ค๋๋์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์๋นํ๊ธฐ ์ํ ๊ฒ์ด ์๋๋๋ค. ์์ผ๋ก ๋์๊ฐ ๊ธธ์ ๋ํ ๊ฐ๋
์ฆ๋ช
์ด์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ดํด๋ณธ ํ ์ ๋งํ ์ ๊ทผ ๋ฐฉ์ ์ค ํ๋๋ react-native
๋์์ผ๋ก ๋ค์ ์์ฑํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ฉด react-native-web ์ด ์ฐ๋ฆฌ๋ฅผ ์ํด ์ด๋ ค์ด ๋ถ๋ถ์ ์ํํ ๊ฒ์
๋๋ค.
๊ทธ๋ฌ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
react-with-styles ๋ ์ดํด๋ณผ ๊ฐ์น๊ฐ ์์ต๋๋ค.
์ผ๋ง๋ ๋ง์ react-native-web์ด ํ๋ก๋์ ์ค๋น๊ฐ ๋์ด ์์ต๋๊น?
@oliviertassinari ์ ๋ ํ์ฌ ์น์ฌ์ดํธ๋ฅผ react-native-web
์ด์ํ๊ณ ์์ผ๋ฉฐ ์์ฉํ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํฌ๋ก์ค ํ๋ซํผ ์ต์ปค ํ๊ทธ href ๊ตฌ์ฑ ์์๊ฐ ์๊ณ ๋ค๋ฅธ ๊ธฐ๋ฅ์ด ๋๋ฝ๋์์ ์ ์์ง๋ง ๊ธฐ๋ณธ ReactDOM์ ํ๋ก๋์
์ค๋น๊ฐ ๋์ด ์์ผ๋ฉฐ ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ํ์๋ก ํ๋ ๊ฒ์
๋๋ค.
๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํฉ๋๊น?
material-ui
์ ๊ฒฝ์จ์ผ ํฉ๋๊น? ๋ชจ๋ ํ๋ซํผ์์ ๊ตฌ์ฑ ์์ ๋๋ ํ๋ฉด์ ์น์๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. material-ui
๊ตฌ์ฑ ์์๊ฐ ์คํ์ผ์ ์ ์ดํ๋ โโprops๋ฅผ ์ ๋ฌํ ์ ์๋ ํ, ์ฐ๋ฆฌ๋ ํฉ๊ธ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
material-ui
๋ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ํํฉ๋๊น? ์ฐ๋ฆฌ๋ ํ ํ์๊ฐ ์์ต๋๊น?
๋ณต์กํ ํ ๋ง ์๋ฃจ์ ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํฉ๋๊น?
React Native์์ ์ง์๋์ง ์๋ ์ํ์ ์๋ตํ๊ฑฐ๋ ์ด๋ฆ์ ๋ฐ๊พธ๋๋ก Platform ์ ํ์ธํ ์๋ ์์ต๋๋ค. (๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ๋๋ก ์ ๊ณต๋๋ ๊ฒฝ์ฐ) ํจ๋ฉ๊ณผ ์ฌ๋ฐฑ์ด ๊ธฐ๋ณธ์ ์ผ๋ก React Native์์ ๋ฐ๋์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฐ๋ฆฌ๊ฐ ํด์ผ ํ ์ผ์ createStyleSheet
์์ํ๋ ๋ฉ์๋๋ฅผ ๋ํํ์ฌ ๊ฒฐ๊ณผ๋ฅผ "์น" ํ๋ซํผ์ด ์๋ ํน์ ํธํ ๊ฐ๋ฅํ ์คํ์ผ๋ก ๋ณํ/ํํฐ๋งํ๋ ๊ฒ์
๋๋ค.
์์ง ์จ๋ณด์ง๋ ์์์ง๋ง
๋๋ ๋ํ ๊ทธ๊ฒ์ ์ฌ์ฉํ์ง ์์์ง๋ง react-tunnel
์ ๊ฐ์ ๊ฒ์ด ํ
๋ง ์ปจํ
์คํธ์ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ์ปค๋ฎค๋ํฐ์์ ๋ ๋ง์ด ๊ณต์ ํ ์ ์๋ค๊ณ ๋๋ผ๊ธฐ ๋๋ฌธ์ ๋ค์ ์ฌ์ฉํ๊ณ ๋
ธ์ถํ ์ ์์ต๋๋ค. ๋ ์ธ๊ธฐ ์๋ ๋๋ฑ๋ฌผ์ด ์์ ์ ์์ต๋๋ค.
์ผ๋ง๋ ๋ง์ react-native-web์ด ํ๋ก๋์ ์ค๋น๊ฐ ๋์ด ์์ต๋๊น? ์๋ฅผ ๋ค์ด ์ก์ ํ ์คํธ๋ฅผ ๋ณธ ์ ์ด ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ํํ ์์ ๊ฐ ์์ต๋๋ค: https://necolas.github.io/react-native-web/storybook/
๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํฉ๋๊น?
JavaScript์์ matchMedia
(๋๋ Dimension
)ํ์ฌ ๋ ๋๋งํ ์คํ์ผ๊ณผ ๊ตฌ์ฑ ์์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
ํ๋ซํผ ๊ฐ ์ต์ปค ํ๊ทธ href ๊ตฌ์ฑ์์๊ฐ ๋๋ฝ๋์์ต๋๋ค.
์, "์ ์ ํ" ์๋ฃจ์
์ด ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ง๊ธ์ View
๋ฐ Text
๊ฐ์ ๋งํฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค(๋ฌผ๋ก ์น ์ง์๋ง ๊ฐ๋ฅ).
<Text accessibilityRole='link' href={href}>{text}</Text>
๋ณต์กํ ํ ๋ง ์๋ฃจ์ ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํฉ๋๊น?
React Native๋ ์ด ์์
์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ์ฌ์ ํ context
๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฉํ ์คํ์ผ ๊ฐ์ฒด๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ๋๋ Fela์ ์ปดํฌ๋ํธ ๋ด API๋ฅผ ์๋นํ ์ข์ํ์ง๋ง react-native-web
์ ์ฌ์ฉํ๋ค๋ฉด ๊ตฌํ ๋ฐ ํ๋ฌ๊ทธ์ธ API๊ฐ ๊ณผ๋ํ๊ฒ ๋ณด์
๋๋ค.
์ฐ๋ฆฌ๊ฐ ํด์ผ ํ ์ผ์ createStyleSheet ๋ฑ๊ฐ ๋ฉ์๋๋ฅผ ๋ํํ์ฌ ๊ฒฐ๊ณผ๋ฅผ "์น"์ด ์๋ ํ๋ซํผ๋ณ ํธํ ๊ฐ๋ฅํ ์คํ์ผ๋ก ๋ณํ/ํํฐ๋งํ๋ ๊ฒ์ ๋๋ค.
RN๊ณผ ํธํ๋์ง ์๋ ์คํ์ผ API๋ฅผ ๋
ธ์ถํ๋ ๊ฒ์ด ๋ฌธ์ ์ธ๊ฐ์? ๊ทธ๋ ๋ค๋ฉด RN ํธํ ์คํ์ผ API๋ฅผ ๋
ธ์ถํ๊ณ react-native-web
์์ DOM ์คํ์ผ๋ก ๋ณํํ๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@necolas
RN๊ณผ ํธํ๋์ง ์๋ ์คํ์ผ API๋ฅผ ๋ ธ์ถํ๋ ๊ฒ์ด ๋ฌธ์ ์ธ๊ฐ์? ๊ทธ๋ ๋ค๋ฉด RN ํธํ ์คํ์ผ API๋ฅผ ๋ ธ์ถํ๊ณ react-native-web์ด ์ด๋ฅผ DOM ์คํ์ผ๋ก ๋ณํํ๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ข์ ์ง์ . ์๋ฅผ ๋ค์ด react-native-web
์ :hover
๊ฐ ์์ต๋๊น?
@necolas ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ํ๊ณ ์๋ ํน์ ์์
์ react-native-web
ํฌํ
ํ๋ฉด ์ด์ ๋ฒ์ ๊ณผ์ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ material-ui
๋น์ฉ์ด ๋ค ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น? ๋๋ ์ ๋ง๋ก ๊ทธ๊ฒ์ ๋ํด ์๋ฌด๊ฒ๋ ๋ชจ๋ฅธ๋ค. react-native-web
๊ฐ ์ฌ๋ฐ๋ฅธ ์ ๊ทผ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํธ๋ฒ ์คํ์ผ์ ๋ํด ํน๋ณํ ๊ฒ์ ์ ๊ณตํ์ง ์์ต๋๋ค(RN๋ ๋ง์ฐฌ๊ฐ์ง์). Windows ๋ฐ Ubuntu์ฉ ๋ฐ์คํฌํ ๊ตฌํ์ด ๋ง์ฐ์ค ์ธํฐํ์ด์ค์ฉ์ผ๋ก ๋ฒ๋ค๋งํ๊ฑฐ๋ ์ด๋ฒคํธ๋ฅผ ํตํด ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๋์ง ๊ถ๊ธํฉ๋๋ค.
์ด๋ค ๋ธ๋ผ์ฐ์ ์ง์์ด ํ์ํ์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋ ์์ฉํ ์ ์์ต๋๋ค.
react-native-web
๋ react-dom
๊ตฌ์ฑ ์์ ์คํ์ผ API ์ค์์ ์ ํํ๋ ค๋ฉด MuiThemeProvider
๋ฅผ ํตํด ๊ตฌ์ฑ ์์ ๊ณ์ธต ๊ตฌ์กฐ ์ปจํ
์คํธ์ ๋ถ์ธ ๊ฐ์ ์ฝ์
ํด์ผ ํ ์๋ ์์ต๋๋ค.
๊ฐ์ฅ ์ข์ ๋๋ต์ react-native-web
์คํ์ผ API๋ก ์ ํํ๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ ์นํธํ๋ ๊ฒ์ด์ง๋ง ์๋ง๋ ํ๊ฐ ๋ ๊ฒ์
๋๋ค.
@oliviertassinari material-ui
๋ฅผ react-native
์คํ์ผ API๋ก ์ ํํ์ฌ ๋ฒ์ด๋ ์ ์์ต๋๊น? ๋ง์ฐ์ค ํน์ ์คํ์ผ์ด ๋์ถ๋๋๋ก ํ์ฉํ์๊ฒ ์ต๋๊น?
@necolas @oliviertassinari ์ฐธ๊ณ ์ฉ์ผ๋ก๋ง. ์ง๊ธ์ ์์ฑํ์ง๋ง ์ง๋ 2-3์ผ ๋์ ๋ธ๋์น(https://github.com/mattferrin/material-ui-build/tree/mine)๋ฅผ ํฌ๋ก์ค ํ๋ซํผ์ผ๋ก ์ด์ํ๋ ์์ ์ ํด์์ต๋๋ค. (์ฅ๊ธฐ์ ์ผ๋ก ์ด ์์ ์ ์ค์ด๊ธฐ ์ํด) ์ ๋ง ํ์ํฉ๋๋ค.
๋๋ ๋ชจ๋ ๊ฒ์ react-native-web
๊ตฌ๋ฌธ์ผ๋ก ์ด์ํ๊ณ ์ด์๋์ง ์๋ ์คํ์ผ์ ์ฃผ์ ์ฒ๋ฆฌํ์ง๋ง ๊ฒฐ๊ตญ ๋ค์ ์ฃผ์์ ๋ฌ๊ณ Platform.OS == 'web'
๋ฅผ ์ฌ์ฉํ์ฌ ์๋ ์ฝ๋๋ฅผ ๋ณธ์ง์ ์ผ๋ก ์ ์งํ๊ฒ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ด๊ฐ ์์
ํ๊ณ ์๋ ์น์ฌ์ดํธ ์ด์์ ๋ง์น๋ฉด ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. ๊ทธ ์์ ์์ ๋ด๊ฐ ๊ฐ์ธ์ ์ผ๋ก ํ์๋ก ํ๋ ๊ฒ๋ง์ด ๋ถ์์ ํ๊ฒ ์ด์๋ ๊ฒ์
๋๋ค.
๋๋ Mac๊ณผ Windows ์ปดํจํฐ ์ฌ์ด๋ฅผ ์ด๋ํ๊ธฐ ์ํด ๋ฐ์ด๋ถ์ด๊ธฐ ๋๋ฌธ์ (๋์ค์ ๋ค๋ฃฐ ๋๊น์ง) ์์ ํ ์๋ง์ ๋๋ค.
MUI๊ฐ RN์ ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆด ์ ์๋ ์ฌ๋๋ค์ ์ํด ๋์์ด ์์ต๋๋ค. ๋๋ ์ฌ๊ธฐ์ ์๋ก์ ๋ชฉ๋ก์ ์ ์งํ๊ณ ์์ต๋๋ค: https://habd.as/awesome-react-components/#react -native
์ ์ฒด ์คํ์ผ๋ง ์๋ฃจ์ ์ด ๋ณ๊ฒฝ๋๊ณ ์๋ค๋ ๊ฒ์ ์๊ณ ์์์ง๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ฒ์๋ถํฐ ๋ค์ ์์ฑ๋๋ ๋ถ๋ถ์ ๋์ณค์ต๋๋ค. ๊ทธ๊ฑด ๋ด ์๋ชป์ด์ผ. ์ผ๋ถ ์ฝ๋๋ฅผ ๋ณด๊ณ ์ต์ข ์คํ์ผ์ ๋ณธ์ง์ ์ผ๋ก ๋์ผํ๊ฒ ์ ์ง๋๊ณ ๊ธฐ์ ๋ง ๋ณ๊ฒฝ๋ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ์ต๋๋ค. ๋ด๊ฐ ํ๋ ธ์ด. ๋ก๋๋งต์ ์์ ํ ๋ฌด์ํ์ง ์๊ณ ๋งค์ฐ ์๋ชป๋ ๊ฐ์ ์ ํ์ต๋๋ค. ๋๋ ์ฌ๊ธฐ์ ๋์ ์๋๋ฅผ ํฌ๊ธฐํด์ผ ํ ๊ฒ ๊ฐ๋ค.
@mattferrin ์คํ์ผ ์๋ฃจ์
๋ณ๊ฒฝ์๋ ๋ง์ API ๋ณ๊ฒฝ์ด ํ์ํ์ง๋ง ์ฒ์๋ถํฐ ์์ ํ Table
). ํ์ง๋ง ์ถ๊ฐ๋ก ๋ง์ ๊ตฌ์ฑ ์์์ ๋ํด ๋ค๋ฅธ ์์ญ์์ API๋ฅผ ํฉ๋ฆฌํํ ์ ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค. . ๊ทํ์ ๋
ธ๋ ฅ์ด ๋ญ๋น๋์๋ค๋ฉด ์ฃ์กํฉ๋๋ค. Material-UI๊ฐ ์ง์ฐ๋์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค!
@mbrookes ๊ทธ๋ ์ง ์์ต๋๋ค. ๋๋ ๋จ์ด์ ธ ๋ถ๊ธฐ์ ์ค์ํ๋ค master
๋์ next
์์ ์ฐจ์ด (๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฒด ์์
)์ ๊ณผ์ ํ๊ฐํฉ๋๋ค. ๋ด ์๋ชป์ด์๊ณ ์ํ์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์์ต๋๋ค. ๋์ค์ React Native material-ui
ํ์ฌ๋์์ ๋น Text
์์๋ฅผ ์๋ฆฌ ํ์์๋ก ๋ฐํํ ๊ฒ์
๋๋ค. ๋ด ์น ์ฌ์ดํธ๋ฅผ react-native-web
์์ ํ ์ด์ํ๋ฉด ๋ค์ ๋์์ next
์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฆฌ๋ฒ ์ด์คํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์ค๋ ์ด ๋ ์์ ๊ณต๊ฐํฉ๋๋ค: https://carbon-ui.com
material-ui์์ ์๊ฐ์ ๋ฐ์ ์น ๋ฐ ๋ฐ์ ๋ค์ดํฐ๋ธ์์ ์๋ํฉ๋๋ค. :)
@tuckerconnelly u made my day
@tuckerconnelly ์์ฐ, ์ด ํ๋ก์ ํธ์ ๋ง์ ์ ์ฌ๋ ฅ์ด... ์๊ณ ํ์ต๋๋ค! ๋ ํฐ ์ปค๋ฎค๋ํฐ๊ฐ ์ด ๋ ธ๋ ฅ์ ๋ฐฐํ์์ ๊ฒฐ์งํ๊ธฐ๋ฅผ ํฌ๋งํฉ๋๋ค! ๐ป
@tuckerconnelly ์กฐ๊ธ ํผ๋ ์ค๋ฝ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋ง๋ค๊ธฐ ์ํด ์์ฃผ ์ฝ๊ฒ ์ค์ ๋ก ๋ฐ๊ฒฌ material-ui
(์คํ ๋ถ๊ธฐ์ ๋ด ์ค์์๋ ๋ถ๊ตฌํ๊ณ ์กฐ๊ฑด๋ถ ํฌ๋ก์ค ํ๋ซํผ์ master
๋์ next
๋ด ์๊ฐ์ ๋ญ๋น). ๋
๋ฆฝ ํ๋ก์ ํธ์ ์ด๋ค ์ด์ ์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค.
2์์ ๋ค์ ์๋ํ๋๋ฐ ํนํ ๋ฆฌํ ๊ตฌ์ฑ ์์์ ํ๋ซํผ ๊ฐ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ก ์ธํด ์ด๋ ค์์ ๊ฒช์์ต๋๋ค.
๋๋ก๋ ์ฒ์๋ถํฐ ์์ํ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค.
๋์๊ฒ React Native์์ ์๋ํ์ง ์๋ React ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค ... ๊ทธ๋ฆฌ๊ณ material-ui์ ๊ฐ๋ฐ์๋ RN์ ์ฐ์ ์์๋ก ์๊ฐํ์ง ์์๊ธฐ ๋๋ฌธ์ ... ์๋ก์ด ๊ฒฝ๋ก์์ ์์ํ๋ ๊ฒ์ด ๊ณต์ ํ๊ณ ๋ ผ๋ฆฌ์ ์ ๋๋ค.
@tuckerconnelly ๊ตฌ์ฑ ์์๊ฐ ๊ตฌํ๋๋ ๋ฐฉ์์ด ์ค์ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ ํ๋ก์ ํธ๊ฐ ๊ตฌ์ฑ ์์์ ๋ํด ๋์ผํ API๋ฅผ ๊ตฌํํ๊ณ ๋์ผํ ์ด๋ฆ์ ๋์ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด ์์ ์ ์ํํ๊ณ ๊ณต์ ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
๋ฐ๋ผ์ v1.0.0 ์ดํ์ 2017/2018๋ ์๋ RN์ด material-ui์ ๋ค์ ๋ชฉํ๊ฐ ๋ ๊น์?
์์ ๋ณผ ์ ์๋ฏ์ด:
(์๋ง๋ v1 ์ถ์ ์ดํ์) RN ๊ตฌ์ฑ ์์๋ฅผ ์ ๊ณตํ๋ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ค๋ฉด ๋ง์ ์ฌ๋๋ค์ด ๋น์ ์ ๋์ธ ๊ฒ์ ๋๋ค. ๋ช ํํ ๊ฒฝ๋ก๋ฅผ ์์ํ๊ณ ์ ์ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๋น์ ์ ํ๋ฅญํ ์ปค๋ฎค๋ํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๊ฒ์ ์ฌ์ฉํ์ฌ ์ต๊ณ ์ ์ ํ์ ๋ง๋ค ์ ์์ต๋๋ค.
@NitroBAY 1.0์ ์คํ์ผ๋ง์ ์ํด JS ๊ฐ์ฒด ๋์ JSS๋ฅผ ์ฌ์ฉํ๋ฏ๋ก React Native๋ฅผ ์ง์ํ๊ธฐ ์ํด cssinjs/jss#368์ ์์กดํฉ๋๋ค. ํ์ง๋ง https://github.com/xotahal/react-native-material-ui ์ ๊ฐ์ React Native์ฉ ๋ณ๋ ฌ ๋ฒ์ ์ ๊ฐ๋ฐํ๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค https://github.com/necolas/react-native-web์ ์ฌ์ฉํ์ฌ ์น์์ React Native ๋ฒ์ ์ ์คํํ ์ ์์ต๋๋ค.
๊ทธ๋์ ์ด๊ฒ์ ๊ณ ์น ์ ์๋ ๊ฒ์ ๋๊น? ๊ทธ๋ ๋ค๋ฉด ํ๊ทธ๋ฅผ ๊ทธ๋ ๊ฒ ์ง์ ํ ์ ์์ต๋๊น?
@jhabdas ์ฌ์ง ์ฌ์์ React Native๋ก ๊ฐ์ ธ์ค๋ ์ข์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณด๊ณ ์ถ์ต๋๋ค.
์ค๋ ๋์ ๊ฒ์๋ ๋งํฌ์์ ์ด๋ฏธ ์ข์ ํ๋ณด์ ๋ชฉ๋ก์ด ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ๊ทธ ๋ฌธ์ ๋ฅผ ์ด์ด๋๊ณ ์๋ค๋ฉด ๊ทธ๊ฒ์ ์น๊ณผ ๋ค์ดํฐ๋ธ๋ฅผ ํตํฉํ๋ ๊ฒ์ ๊ดํ ๊ฒ์
๋๋ค. ๋ ํ๋ซํผ ๊ฐ์ ์ผ๊ด๋ API๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ํด ์์
ํ ์๊ฐ์ด ์์์ผ๋ฉด ์ข๊ฒ ์ง๋ง ๊ทธ๋ ์ง ์์ผ๋ฉฐ ๋ณ๊ฒฝ๋ ์ง ์์ฌ์ค๋ฝ์ต๋๋ค.
@callemall/material-ui ํ์ ๋๊ตฐ๊ฐ๊ฐ ๊ทธ ๋ฌธ์ ๋ฅผ ์ฃผ๋ํ๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค.
์ฌ์ ํ carbon-ui๋ฅผ ์ง์ํฉ๋๋ค. :) ํ์ํ ๋๋ง ๊ตฌ์ฑ ์์๋ฅผ ์ถ๊ฐํ์ง๋ง(์ ์ฒด ์ฌ์์ ๋ฏธ๋ฆฌ ์ฑ์ฐ๋ ค๊ณ ํ์ง ์์), ์ฌ๋๋ค์ด ๋ชจ์ฌ๋ค ์ ์๋ ์ข์ ํ๋ ์์ํฌ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ตฌ์ฑ ์์๋ฅผ ์ถ๊ฐํ๋ ค๋ ์ฌ๋์๊ฒ ๋์์ด ๋ ๊ฒ์ ๋๋ค. :)
@tuckerconnelly https://github.com/xotahal/react-native-material-ui ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐ https://github.com/tuckerconnelly/carbon-ui/blob/master/src/style/Elevation.js ์ฝ๋๋ฅผ ์ ์ฉํ๋ค๋ฉด ์ ์๊ฐ์๋ ์๋ ํ ๊ฒ์ด๋ค. @oliviertassinari ๋ ํจ๊ป ์์ ํ ์ฃผ์ ํ๋ก์ ํธ๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋ค๋ ์ ์ ์ ์ง์ ํฉ๋๋ค.
@quangbuule ์ ๊น๋ง์. ์ฑ์ RN ์ฑ์ผ๋ก ๊ฐ๋ฐํ ๋ค์ ํด๋น ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ RN์ WEB ๋ฒ์ ์ผ๋ก ๋ณํํด์ผ ํ๋ค๊ณ ๋ง์ํ์ญ๋๊น?
๋๋ ๊ทธ๊ฒ์ ๋ํด ๋ค์ด๋ณธ ์ ์ด ์์ง๋ง ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๋ ์ด์ material-ui
ํ์ง ์๊ณ RN ํฌํฌ๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
@NitroBAY ์ฐ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก material-ui๋ฅผ RN ํฌํฌ๋ก ์ด์ํ๊ณ ์ค๋น๊ฐ ๋๋ฉด ์น๊ณผ ๋ค์ดํฐ๋ธ ๋ชจ๋์ ๊ณต์ ๋ฒ์ ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. material-ui๊ฐ ๋ค์ ๋ธ๋์น์์ ๋น์ทํ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด ๊ด์ฐฎ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ชจ๋ ๋ฉ์ฒญํ ์ง๋ฌธ์ ๋ํด ์ฃ์กํ์ง๋ง ์ฝ 1 ์ฃผ ์ดํ๋ก ReactLand
์ฐฉ๋ฅํ์ต๋๋ค.
๊ทํ์ ํจํค์ง๊ฐ ์ด ํจํค์ง๋ฅผ ๋์ฒดํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ญ๋๊น?
๋น์ ์ ์ ๊ทผ ๋ฐฉ์์ ๋ค์ค ํ๋ซํผ์ผ๋ก ๋ณด์ด๋ฉฐ ๋งค์ฐ ์ข์ต๋๋ค. Material-ui๋ ์๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ ์น๋ง ๊ณ ์งํ์ง๋ง ๋ค์์๋ ์๊ฐ์ด ์์ต๋๋ค. ๊ทธ ์ด์ ๋ ๋ฌด์์
๋๊น?
next
next
์ ๋ํ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ค๊ณ ๋งํ์ง๋ง ์ข
์ด ์ ๊ฐ์ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๋ฉด div
๊ตฌ์ฑ ์์๊ฐ ์์ผ๋ฏ๋ก ์น์์๋ง ์๋ํฉ๋๋ค.
we
์(๋) ๋๊ตฌ์
๋๊น? ์ด ํ์ ์ผ์์
๋๊น?
๊ธฐ์ ์ ์ธ ๊ณ ๋ ค ์ฌํญ์ ๊ด๊ณ์์ด IOS์์ MD๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฌ์ฉ์๋ฅผ ๊ท์ฐฎ๊ฒ ํ ์ ์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๊น?
ํธ์ง: ์ฃผ์ ์์ ๋ฒ์ด๋ฌ์ง๋ง ์๋ฌด๋ ๋๋ตํ์ง ์์์ต๋๋ค. jss-react
์ ๋น๊ตํ ๋ jss-theme-reactor
๋ ์ด๋ค ์ด์ ์ ๊ฐ์ ธ์ต๋๊น?
@๋ํธ๋ก๋ฒ ์ด :
react-native-material-ui
๊ธฐ์ฌํ๊ธฐ ์์ํ๊ธฐ๋ฅผ ๊ณ ๋ํ๊ณ ์์ต๋๋ค.paper
๋๋ ๊ทธ๋ฆผ์๊ฐ ์ด์ ์น, iOS, Android์์ ์๋ํฉ๋๋ค. ๊ทธ๋์ ๊ทธ๊ฒ์ ํฐ ๋ฌธ์ ๊ฐ ์๋๋๋ค.material-ui
master
๋ถ๊ธฐ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์คํ์ผ์ํธ๋ฅผ ์ ์ํ์ง๋ง ์ฑ๋ฅ ํฅ์(30% ํฅ์)์ ์ํด ๊ธฐ์ฌ์๋ next
๋ถ๊ธฐ์์ JSS(JS์ CSS)๋ก ์ ํํฉ๋๋ค. ํ์ฌ JSS๋ React Native์ ํธํ๋์ง ์์ต๋๋ค.material-ui
๋ฅผ ์ฌ์ฉํ๋๋ฐ ๋ง์ด ๋ณด์ง ๋ชปํ์ต๋๋ค. ์ฌ์ฉ์๋ค์ ๊ทธ๊ฒ์ ๋ํด ๋ถํํ์ต๋๋ค(http://moderntranslator.com/). ์ผ๋ถ์์๋ MD๊ฐ ์ฌ์ฉํ๊ธฐ ๋ ์ฝ๋ค๊ณ ๋งํ๊ธฐ๊น์ง ํ์ต๋๋ค.๊ทธ๋ฌ๋ ๊ตฌ์ฑ ์์๊ฐ span
๋๋ div
์ ๊ฐ์ HTML ์์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ next
๋ถ๊ธฐ๊ฐ RN์์ ์๋ํ๋ ๋ฐฉ์์ ์ฌ์ ํ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ๋ด๊ฐ ๋์น ๊ฒ์ด ์์ ์ ์์ง๋ง RN์์ ๊ฐ๋ฐํ๋ ค๋ฉด RN ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํด์ผ ํ์ง ์์ต๋๊น?
๋๋ ๋น์ ์ ์ธ์ฉํ๊ณ ์์ต๋๋ค :
์น๊ณผ ๋ค์ดํฐ๋ธ ๋ชจ๋์ ๊ณต์ ๋ฒ์ ์ด ๋ฉ๋๋ค. material-ui๊ฐ ๋ค์ ๋ธ๋์น์์ ๋น์ทํ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด ๊ด์ฐฎ๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ์ง๋ง ์ ๊ฐ ์ ๋๋ก ์ดํดํ์ง ๋ชปํ ๊ฒ์ผ ์๋ ์์ต๋๋ค. next
๋ถ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ฉด RN์์ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๋ง์
๋๊น?
@NitroBAY : next
๋ธ๋์น๋ material-ui
๋ฅผ React Native์ ๋ ํธํ๋๊ฒ ๋ง๋ญ๋๋ค. ๋ํ RN ๊ตฌ์ฑ ์์๊ฐ span ๋๋ div๋ฅผ ์ง์ํ์ง ์๋๋ผ๋ ์กฐ๊ฑด๋ถ ๊ท์น์ ์ฌ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
if (platform === 'web') return <span/>;
else return <View />;
https://github.com/necolas/react-native-web์ ํ์ธํ ์ ์์ต๋๋ค.
์ค ์ข์, ๋๋ ๊ทธ๋ค์ด RN๊ณผ ํธํ๋๋๋ก ๋ง๋ค์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์ด ํ๋ก์ ํธ๊ฐ React Native API๋ฅผ ํตํ ๋ค์ค ํ๋ซํผ ์ง์์ ๊ด์ฌ์ด ์๊ณ ๊ทธ ๋ ธ๋ ฅ์ https://github.com/xotahal/react-native-material-ui ๋ก ์ฎ๊ฒจ์ผ ํ๋ค๋ TL;DR
carbon-ui์ฉ ๋ฌธ์๊ฐ ๋ ์ข์ผ๋ฉฐ ์ด๋ฏธ ์น์์ ์๋ํฉ๋๋ค. react-native-material-ui์ ์ด์ ์ ๋ฌด์์ ๋๊น?
๊ทธ๋์ ๋ชจ๋๊ฐ material-ui
์ฌ์ฉ์ ์ค์งํ๊ณ ๋ช ์๊ฐ ํ์ ๊ถ์ฅํ๋ค๋ ๋ฐ ๋์ํฉ๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ด ํจํค์ง์ ์์ ์๊ฐ RN์ ์ํ์ง ์๋ ๊ฒ์ด ์ ๊ฐ์
๋๊น?
carbon-ui
StyleSheet
์ฌ์ฉํ์ง ์๊ณ ๋ง์ ์น ๊ธ๊ผด์ ์ฝ์
ํ๋ฉด ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ง์ ํด, ์๋ค์! ์์ง ์ค๊ณ ์๋ค.
TL;DR: React Native์ฉ ๊ตฌ์ฑ ์์๋ฅผ ๋น๋ํ๋ฉด RN ๋ฐ ์น์์ ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์น์ฉ ๊ตฌ์ฑ ์์๋ฅผ ๋น๋ํ๋ฉด RN์์ ์๋ํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ material-ui
๋ ์น์ฉ์ผ๋ก ์ ์๋์์ผ๋ฉฐ ์น์ฉ์ผ๋ก ์ต์ ํ๋์ด ์์ต๋๋ค. => RN์์ ์๋ํ๋ ค๋ฉด ์ฑ๋ฅ์ด ํฌ์๋์ด์ผ ํฉ๋๋ค(์ ์ด๋ ํ์ฌ๋ก์๋). ๋ฐ๋ผ์ RN์ด ๋ ์ฑ์ํด์ง ๋๊น์ง ๋ ํ๋ก์ ํธ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ ์งํ๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์น์ ์ต์ ํ๋จ => RN์์ ์๋ํ๋ ค๋ฉด ์ฑ๋ฅ์ด ํฌ์๋์ด์ผ ํฉ๋๋ค(์ ์ด๋ ํ์ฌ๋ก์๋)
๊ทธ๊ฒ์ ๋ํด ๊ณต์ ํ ๋ฐ์ดํฐ๊ฐ ์์ต๋๊น?
์ง๊ธ๊น์ง RNW์ ๋ํ ๋ด ๋ฐ๊ฒฌ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
@necolas #4066
ํ , StyleSheet๋ฅผ Uranium๊ณผ ํจ๊ป ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณผ ์ ์์ต๋๋ค. CSS ๊ด๋ จ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ์ง ๋ชปํ์ง๋ง StyleSheet ํญ๋ชฉ๊ณผ ๋ ์ ํตํฉํ ์ ์๋์ง ํ์ธํ๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ํฐ ์ฑ๋ฅ ํํธ๋ Animated: https://github.com/animatedjs/animated/issues/48 ํ์ง๋ง ์ด๋ ๋ชจ๋ RNW ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์น ๊ธ๊ผด์ ์ฝ์ ํ๋ฉด ์ฑ๋ฅ์ด ์๋ฏธ ์๊ฒ ๊ฐ์ํฉ๋๊น? Google ๊ธ๊ผด์์ ์ง์ ๋ก๋ํ๋ฏ๋ก ์ฌ์ฉ์ ์์คํ ์ ์ด๋ฏธ ์บ์๋์ด ์์ ์ ์์ต๋๋ค.
๋ด๊ฐ ์๊ฐํ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ชจ๋ ์ฌ๋๋ค์ด ๋จ์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์งํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ material-ui๊ฐ React Native๋ฅผ ์ง์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
@necolas TL;DR์ ์์ผ๋ก ๋์๊ฐ ๊ธธ์ด ๋ถ๋ถ๋ช ํ๋ค๋
A = ๋ฐ์ ๋ค์ดํฐ๋ธ
B=์น
๊ฐ๋ฅํ ์ ๊ทผ ๋ฐฉ์์ ๊ฐ์ฅ ์ ํ๋ ํ๋ซํผ์ ๋์์ผ๋ก ํ์ฌ react-native ์์ ์์ํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ธฐ๋ฅ์ ์น์ผ๋ก ํ์ฅํฉ๋๋ค. ๊ธฐ๋ฅ์ ์น์ผ๋ก ํ์ฅํ๊ธฐ ์ํด ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ ์ถฉ์ ๊ณผ ํจ๊ป ์ ๊ณต๋๋ฉฐ, ์ฐ๋ฆฌ๋ ์ฝ๋ ๊ณต์ ์์ ์น๋ฆฌํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ด๋ค ์ฐจ์์์ ์์ ๊ฒ์ผ๋ก ์์ํ๊ณ ์์ต๋๋ค.
API๋ ๋ธ๋ผ์ฐ์ ์์ ์๋ํ๋๋ก ๋ค์ ๊ตฌํํด์ผ ํฉ๋๋ค. ์ค๋ฒ ํค๋๋ ๋ฌด์์ ๋๊น?
๊ฐ์ฅ ์ ํ๋ ํ๋ซํผ์์ ์์ํ ๋ ์น์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ผ๋ถ ๊ธฐ๋ฅ์ ๋ค์ ๊ตฌํํด์ผ ํฉ๋๋ค. ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ ์ด๋ป์ต๋๊น? CSS ์์, CSS ์ ๋๋ฉ์ด์
?
๋ค์ดํฐ๋ธ ๋ฒ์ ์ ๋ถํ๋ฆฌ์ง ์๊ณ ๋๊ฐ ์ ๊ทผ์ฑ ๋ฐ ํค๋ณด๋ ์ด๋ฒคํธ๋ฅผ ๊ตฌํํ ๊น์?
๋ ๋ค๋ฅธ ์๋ฃจ์ ์ ๋ ์ ํ๋ ํ๋ซํผ, ์ฆ ์น์์ ์์ํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋๋ฝ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ๋ค์ ๊ตฌํํฉ๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ ์ถฉ์ ๊ณผ ํจ๊ป ์ ๊ณต๋๋ฉฐ, ์ฐ๋ฆฌ๋ ์ฝ๋ ๊ณต์ ์์ ์น๋ฆฌํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ด๋ค ์ฐจ์์์ ์์ ๊ฒ์ผ๋ก ์์ํ๊ณ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ํฌ์ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด CSS ๋ฏธ๋์ด ์ฟผ๋ฆฌ, CSS ์ ๋๋ฉ์ด์ ๊ณผ ๊ฐ์ ์ผ๋ถ ์น ๊ธฐ๋ฅ์ ๋ค์ดํฐ๋ธ์์ ๊ตฌํํ๊ธฐ ์ ๋ง ์ด๋ ค์ธ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. (๊ณ ๊ธ CSS ๊ท์น)
๋๋ฝ๋ ์น API ๊ธฐ๋ฅ ์ค ์ผ๋ถ๋ ํฐ์น ์ฒ๋ฆฌ, ์คํฌ๋กค ๋ฐ ๋ฌดํ ๋ชฉ๋ก ๋ณด๊ธฐ, DatePicker ๋๋ Drawer์ ๊ฐ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์์ ๊ด๋ จ๋ ๊ฒ์ ๋๋ค.
์ธ ๋ฒ์งธ ์๋ฃจ์
์ API ๋ฐ ํ
์คํธ๋ฅผ ๊ณต์ ํ๋ ์ธํ๋ผ๋ฅผ ์ค์ ํ ๋ค์ ๋ ๊ฐ์ ๊ธฐ๋ณธ ํ๋ซํผ์์ ๊ตฌ์ฑ ์์๋ฅผ ๋ค์ ๊ตฌํํ๋ ๊ฒ์
๋๋ค. ๋ด ์ธ์์ ๋ฐ๋ฅด๋ฉด ๋ฐ์ ๋ค์ดํฐ๋ธ ๊ฐ iOS ๋ฐ Android์ ์ ๊ทผํ๋ ๋ฐฉ์์
๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ด์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ํผํฉํ์ฌ ์ฌ์ฉํ์ฌ ๊ณ์ฝ์ ์์ ํ ์ฑ์๋๋ค. ์๋ฏธ๊ฐ ์์ ๋ ์ฝ๋ ๋ถ๊ธฐ๋ฅผ ์ฌ์ฉํ๊ณ ๊ฐ๋ฅํ ํ ์ฝ๋๋ฅผ ๊ณต์ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด:
๋๋ ๊ทธ ์ต์ 3์ด ๊ฐ์ฅ ์ ๋งํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ด ๋ด๊ฐ react-swipeable-views ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ์๋ํ ๋ฐฉ๋ฒ์ ๋๋ค.
https://github.com/tuckerconnelly/uranium์ ํ๋ซํผ ๊ฐ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค. :)
RN์ ์ฅ์ ์ ์ถ์ API ๋ฐ ํ๋ฆฌ๋ฏธํฐ๋ธ์ ๊ฐ๋จํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๊ณ ์ ์์ค ๊ตฌํ์ด ์ฒ๋ฆฌ๋๋ค๋ ๊ฒ์ ๋๋ค. Animated๋ ๋์ผํฉ๋๋ค. ์ ๋๋ฉ์ด์ ์ ์ํ ๊ฐ๋จํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ ์์ค ๊ตฌํ(iOS/Android์ ๊ธฐ๋ณธ ์ ๋๋ฉ์ด์ , ์น์ CSS ์ ํ)์ด ์ฒ๋ฆฌ๋ฉ๋๋ค.
๋๋ animation.js๊ฐ CSS ์ ํ์ ์ฌ์ฉํ๋๋ก ์ง๊ทธ์ฌ๊ทธ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์คํ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
@quanglam2807 ์ฐ๋ ๋๊ฐ ๋๋ฌด
๊ธฐ๋ฅ์ ์น์ผ๋ก ํ์ฅํ๊ธฐ ์ํด ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. https://github.com/necolas/react-native-web , https://github.com/taobaofed/react-web
react-web
๋ ์ฑ๋ฅ์ด๋ ๊ธฐ๋ฅ์ ์ผ๋ก ์ฌ๋ฐ๋ฅธ IMO์๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋๋ค.
API๋ ๋ธ๋ผ์ฐ์ ์์ ์๋ํ๋๋ก ๋ค์ ๊ตฌํํด์ผ ํฉ๋๋ค. ์ค๋ฒ ํค๋๋ ๋ฌด์์ ๋๊น?
์ด๋ค ์ฐจ์์ ์ค๋ฒํค๋? ๋ฒ๋ค ํฌ๊ธฐ ์ธก๋ฉด์์ ๊ฒฐ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ธฐ์กด ์ฝ๋ ์ค ์ผ๋ถ๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ RNW ํต์ฌ ์์ถ ์ด์ธ์ ๊ฒ์ ์์กดํ๋ค๋ฉด ๋น ๋ฅด๊ฒ ์ถ๊ฐ๋ ๊ฒ์ ๋๋ค. mobile.twitter.com์ ์คํ์ผ์ด ๋ง์ ๊ตฌ์ฑ ์์์์ CSS ๋ชจ๋์์ RNW StyleSheet๋ก ์คํ์ผ์ ๋ณํํ๋ ๊ตฌ์ฑ ์์ ํฌ๊ธฐ๊ฐ 20-40% ๊ฐ์ํ๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ๋ฐํ์ ์ฑ๋ฅ ์ธก๋ฉด์์ ํ์ฌ css-modules ์ ๋ฉ์ง ์์ต๋๋ค .
๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ ์ด๋ป์ต๋๊น?
matchMedia
๋ฅผ ์ฌ์ฉํ์ฌ ์คํ์ผ๊ณผ ๊ตฌ์ฑ ์์ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ง๋ง ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ์์๋ฅผ ๋ณ๊ฒฝํ๋ ์ด์ ์ด ๋ช
ํํ์ง ์์ต๋๋ค.
CSS ์์, CSS ์ ๋๋ฉ์ด์ ?
RNW๋ CSS ์ ๋๋ฉ์ด์ ์ ์ง์ํฉ๋๋ค(ํคํ๋ ์์ ์ ์ํ๋ ค๋ฉด API๋ฅผ ์ถ๊ฐํด์ผ ํจ). CSS ์์๊ณผ ๊ด๋ จ๋ ์ง๋ฌธ์ ๋ฌด์์ ๋๊น?
๋ค์ดํฐ๋ธ ๋ฒ์ ์ ๋ถํ๋ฆฌ์ง ์๊ณ ์ ๊ทผ์ฑ ๋ฐ ํค๋ณด๋ ์ด๋ฒคํธ๋ฅผ ๊ตฌํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
์ด๊ฒ์ด ๋ฌด์์ ์๋ฏธํ๋์ง ํ์คํ์ง ์์ต๋๋ค. ๊ธฐ๋ณธ ์ฑ์ "ํฝ์ฐฝ" ์๊ณ๊ฐ์ด ์น ์ฑ๋ณด๋ค ํจ์ฌ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฐ๋ผ์ react-native-web์ด ์คํ์ผ์ ์ฒ๋ฆฌํ์ฌ CSS ์ฑ๋ฅ์ CSS ๋ชจ๋ ์ฑ๋ฅ์ผ๋ก ๋ ๋๋งํ๋ ๋ฐฉ๋ฒ์ ๋น๊ตํ๋ ๊ฒ์ ์ด์ ๋ ์ ์ ํ ๊ฒ์ ๋๋ค.
์ ๊ทธ๋ด๊น์?
aphrodite ๋๋ jss์ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ๋ ์ผ์ข ์ react-native-web์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋ ๋๋ฆฌ๊ณ ํฌ๊ธฐ๊ฐ ํฌ๋ฉฐ ๊ฒฐ์ ์ ์คํ์ผ์ ์ ๊ณตํ๋ ๋ฐ ์ ํฉํ์ง ์์ต๋๋ค.
@necolas material-ui
๋ css-in-js ๋ฐฉ์์์ ์คํ์ผ์ํธ ๋ฐฉ์(css in <style>
)์ผ๋ก ์ ํํ๊ธฐ ์ํด ๋ง์ ๋
ธ๋ ฅ์ ๊ธฐ์ธ์ด๊ณ ์์ต๋๋ค. ๊ทธ๋ค์ ๊ตฌ์ฑ ์์๋ฅผ ์ ํํ๊ธฐ ์ํด ๋ช ๋ฌ ๋์ ์ ๊ทน์ ์ธ ๋
ธ๋ ฅ์ ๊ธฐ์ธ์์ต๋๋ค. ์ด์ ๊ฐ ์ฌ๊ธฐ์ ์์ต๋๋ค . ๋ด๊ฐ ์ฝ์ ๋ฐ์ ๋ฐ๋ฅด๋ฉด jss๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํฐ ์ด์ ์ด๋ฉฐ ์ง๊ธ๊น์ง ์คํ์ผ์ ์ฒ๋ฆฌํ๋ ๊ฐ์ฅ ์๋ฒฝํ ์๋ฃจ์
์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ Roadmap.md๋ฅผ ๋ค์ ์ฝ์ผ๋ฉด RN ์ง์์ด ๋ก๋๋งต์ ์์ต๋๋ค.
๋ฐ์ ๋ค์ดํฐ๋ธ์ ํจ๊ป Material-UI๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ๋งค์ฐ ๊ด์ฌ์ด ์์ต๋๋ค. ์งํ ์ํฉ์ ๋ํด ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น?
@wswoodruff ์ง๊ธ์ ์ด๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค - https://github.com/xotahal/react-native-material-ui
ํ์ฌ ์ด๋ฅผ ์ํ ์ธ ๊ฐ์ง ๋ฉ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค.
react-native-material-design โ 2447 - React Native Material ๋์์ธ ์ปดํฌ๋ํธ
react-native-material-ui โ 1040 - React Native๋ฅผ ์ํ ๊ณ ๋๋ก ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅํ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ ๊ตฌ์ฑ ์์์ ๋๋ค.
์ฆ๊ธฐ๋ค!
๋ณดํธ์ ์ผ๋ก ๊ฐ๊ณ ์ถ๋ค๋ฉด ๋ ์๋ ค์ง Carbon UI ๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ด ์๊ฐ ๋์ ๋๋ ์๋ง ์ด๊ฒ๋ค ์ค ํ๋๋ฅผ ๊ณ ์ํ
์ด ์ค๋ ๋์์ ๋ช ๋ฒ ์ธ๊ธํ์ง๋ง ์ด ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ๋ด ๊ด์ฌ์ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ ๋ค์ ์ธ๊ธํ๊ณ ์ถ์ต๋๋ค. ๋ด๊ฐ ๋ณด๊ณ ์๋ ๋ฐ์ ๋ค์ดํฐ๋ธ ์ง์์ ์ฃผ์ ์ด์ ์ ์ค์ ๋ก ๋ฐ์ ๋ค์ดํฐ๋ธ์ ๊ดํ ๊ฒ์ด ์๋๋๋ค. , ๊ทธ๋ฌ๋ ๋์ ๋์ผํ ๊ตฌ์ฑ ์์๋ฅผ ๋ค์ดํฐ๋ธ ๋ฐ ์น _๋ชจ๋_์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ณธ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฒ์ ๋๋ค.
ํด๋น ์ ํ์ ํ๋ฆฌ๋ฏธํฐ๋ธ๊ฐ ์ฌ์ฉ๋ ๊ฒฝ์ฐ react-sketchup ๋ฐ react-pdf ์ ๊ฐ์ ๋ค๋ฅธ ๋๊ตฌ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฐ์ธ์ ์ผ๋ก, ๊ทธ๊ฒ๋ค์ ๋ค์ดํฐ๋ธ๋ณด๋ค ๋์๊ฒ ๋ ํฅ๋ฏธ๋กญ์ง๋ง ๋์ผํ ๋ณ๊ฒฝ์ ์ํด ํ์ฑํ๋ ๊ฒ์ ๋๋ค.
@jhabdas Carbon UI๋ฅผ ์ฌ์ฉํ ๊ฒฝํ์ ์ด๋ป์ต๋๊น? Bcz ๋์๊ฒ ๊ทธ๊ฒ์ ๊ฝค ์ข์ ๋ณด์ด์ง๋ง ์์ง ์ฌ์ฉํ์ง ์์์ต๋๋ค.
@deadcoder0904 ๋ ์์ง ๊ฐ์ธ์ ์ผ๋ก ์ฌ์ฉํ์ง ์์์ต๋๋ค. ์ธํผ๋ํธ ๋ ๋์ ์๋ ์ฌ๋ ์ค ํ ๋ช ์๊ฒ ์์ ๋ด๋ฐ์ด ๋ณด์ธ์. ๊ทธ๋ค์ RN ๋ด์ค๋ ํฐ๋ฅผ ์ด์ํ๋ฉฐ ํด๋น ์ฃผ์ ์ ์ ๋ฌธ๊ฐ์ฌ์ผ ํฉ๋๋ค. ๋ด๊ฐ ๋ค๋ฅธ RN ์ฑ์ ๋น๋ํ ๋(์ข์, ์ธ์ ...) ์ด๋ฒ์๋ ํจ๊ป ๋ฐฉํดํ๊ฑฐ๋ ๋ค๋ฅธ ์์ฉ๊ตฌ๋ฅผ ๊ตฌ์ถํ์ง ์์ ๊ฒ์ ๋๋ค. IMHO ๊ณต๊ฐ์ ๊ธฐ์กด ์์ฉ๊ตฌ ์ ๊ตฌ์ฑ ์์๋ก ํด๊ฒฐ๋ฉ๋๋ค.
๋ค์์ React Native์์ MUI๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ธฐ ์ํด ๊ทน๋ณตํด์ผ ํ๋ค๊ณ ์๊ฐํ ์ ์๋ ๋ช ๊ฐ์ง ์ฅ์ ๋ฌผ์
๋๋ค. v1 MUI๋ฅผ ๊ฐ์ ํ๊ณ JSS, classes
ํจํด ๋ฐ ์ด ์์ ์์ MUI API ๋์์ธ์ ํต์ฌ ๋ถ๋ถ์ธ ๊ธฐํ ์ฌํญ์ ์ ์งํฉ๋๋ค.
classes
ํจํด์ ๋ณด๊ฐํด์ผ ๋์ผํ๊ฒ ์๋ํ์ง๋ง RN์์ ๋์ style
๋ฐฐ์ด์ ์ ๋ฌํด์ผ ํ๋ค๋ ์ฌ์ค์ ์ค๋ช
ํฉ๋๋ค. , ๊ทธ๋ฆฌ๊ณ ์๋ง๋ styles
๋ก ์ด๋ฆ์ ์ง์ ํด์ผ ํฉ๋๋ค. ์๋ง๋ ์ด๊ฒ์ classnames
๋ฅผ ์ญ์ ํ๊ณ ๋ฌด๋ ๋ค์์ ํด๋์ค/className ์ฒ๋ฆฌ์ ์คํ์ผ/์คํ์ผ ์ฌ์ด๋ฅผ ์ ํํ๋ ํ์ฐ ๊ฐ๋ฅํ ๋์ฐ๋ฏธ๋ฅผ ์ถ๊ฐํ์ฌ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.js
const styleProps = props.composeStyles(
'root',
(raised || fab) && 'raised',
fab && 'fab',
fab && mini && 'mini',
color === 'inherit' && 'colorInherit',
flat && color === 'primary' && 'flatPrimary',
flat && color === 'secondary' && 'flatSecondary',
!flat && color === 'primary' && 'raisedPrimary',
!flat && color === 'secondary' && 'raisedSecondary',
size !== 'medium' && `size${capitalize(size)}`,
disabled && 'disabled',
fullWidth && 'fullWidth',
);
return <ButtonBase
{...styleProps}
... />
props.classes
๋ณด๊ณ {classNames}
์ถ๋ ฅํฉ๋๋ค. ๊ธฐ๋ณธ์ ๊ทธ๊ฒ์์ ๋ณด์ผ ๊ฒ์ด๋ค props.styles
์ ์ถ๋ ฅ {style}
.this.composeStyles
๋ฅผ ์๊ฐํ์ง๋ง ๊ทธ ๋์ withStyles
์คํ์ผ ๊ตฌ์ฑ ๋์ฐ๋ฏธ๋ฅผ ์ํ์ ์ผ๋ถ๋ก ์ ๋ฌํ ์ ์์ต๋๋ค.opacity
, backgroundColor
๋ฑ์ ์๋์ผ๋ก ์ ํํ๋ ๊ฐ๋จํ ์ ํ์๋ ์ฝ๊ฐ์ ์์ค์ด ์์ต๋๋ค. ์ด๋ฅผ ๊ฐ๋จํ๊ฒ ์ ์งํ๋ ๋์ฐ๋ฏธ๊ฐ ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ด๊ฐ ๋ณธ ๋ฐ๋ก๋, ๊ทธ ์ด์ธ์ ์ค์ ๋ฌผ์ง ์ ํ ๊ตฌํ์ ์ง๋์น๊ฒ ๋ณต์กํ๊ณ /๋น๋ฐ์ค๋ฌ์ ๋ณด์ด๋ฉฐ ์ ํ์ฅ๋์ง ์์ต๋๋ค. react-transition-group
๋ ๋ฎ์ ์์ค์ ๋ถ๋ถ(์
๊ตฌ/์ถ๊ตฌ ์ฒ๋ฆฌ ๋ฑ)์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ข์ ์ด์์ ๊ฐ์ง๊ณ ์์ง๋ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ํ CSS ์ ํ ๊ธฐ๋ฐ ๋์์ธ ๋์ ์๋ก์ด Web Animations API๋ฅผ ์ฌ์ฉํ๊ณ ์ด์ ๋ํ ํด๋ฆฌํ์ด ํ์ํ ๋ฏธ๋ ์งํฅ์ ์ธ ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.dark
ํ์ฌ ์์ด์ฝ์ด ์ฌ๋ฐ๋ฅธ ๋์กฐ ์์ด์ฝ์ ๊ฐ๋๋ก ์์ ๋ ํ
๋ง์ ์์ ๋ ๋ฒ์ ์ ์ฝ๊ฒ ์ ๊ณตํ ์ ์์ด์ผ ํฉ๋๋ค. ์์(ํ
์คํธ ์์ ๋์ ์ค์ ์์ด์ฝ ์์ ์ฌ์์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ ์์). ์ด๋ ์ฑ ๋ฐ์ ์ค์ฒฉ๋ ๋ฉ๋ด์ ๊ฐ์ ์ฌํญ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.<Button>Text</Button>
์ ๊ฐ์ ๊ฒ๋ค์ ์ค์ฌ์ผ๋ก ์ค๊ณ๋์์ต๋๋ค. ์ฌ๊ธฐ์ MUI๋ ๋ฒํผ ๋ฃจํธ์ fontFace/color ๋ฑ์ ์คํ์ผ์ ์ง์ ํ ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์์์ ํ
์คํธ ๋
ธ๋์ ํผํฉ๊ณผ ํ
์คํธ ๋
ธ๋๋ ์ฌ๋ฐ๋ฅธ ์คํ์ผ์ ์ป์ต๋๋ค.<Text>
์ ์ผ๋ถ์ฌ์ผ ํ๊ณ ๋ชจ๋ ํ
์คํธ ์คํ์ผ์ ํด๋น ๊ตฌ์ฑ์์์ ์คํ์ผ์ ์์ด์ผ ํ๋ฉฐ ํ
์คํธ ์์๋ ํ
์คํธ๊ฐ ์๋ ์์์ ํฌํจํ ์ ์์ต๋๋ค(์:<Button text='Text' />
ํจํด์ React Native์์ ํจ์ฌ ๋ ์ ์๋ํฉ๋๋ค. ๋ถํํ๋ ๊ทธ๊ฒ์ MUI์ ์ ์ ๊ณผ ๊ทผ๋ณธ์ ์ผ๋ก ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ ํ ์ฌํญ์ด ์๋๋๋ค.<MuiText>Text</MuiText>
๋
ธ์ถํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Button
์ ๊ฐ์ MUI ๊ตฌ์ฑ ์์์๋ ํ์ฌ ์ปจํ
์คํธ์ ์คํ์ผ(๊ธ๊ผด, ํ
์คํธ ์์ ๋ฑ...)์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ณต๊ธ์๊ฐ ์๊ณ MuiText๋ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ Text ์์์ ์ ์ฉํฉ๋๋ค.์ค๋ v1์ด ์ถ์๋์๋๋ฐ React Nativeโ์ ๊ณํ์ ๋ฌด์์ธ๊ฐ์?
React Native Material Support์ ๊ฒฝ์ฐ CallStack ํ์์ ์ ์ง ๊ด๋ฆฌ ๋ฐ ์ง์ํ๋ React Native Paper ๋ผ๋ ์๋ฆ๋ค์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค.
ํ์ง๋ง Paper๊ฐ ์๋ฒฝํ๊ฒ ์๋ํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ React Native๋ก ์ด์ํ ๊ณํ์ด ์์ต๋๋คโ
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ด ๋ฌธ์ ๋ฅผ ๋ซ์ ์ ์์ต๋๋ค. :)
@deadcoder0904๋ฅผ ๊ณต์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. Awesome React Components ์ Paper๋ฅผ ์ถ๊ฐํ์ต๋๋ค. CallStack์ ๋ํด ๋ค์ด๋ณธ ์ ์ด ์์ต๋๋ค. ์ฒ์์๋ Call-Em-All๋ก ์ฝ์์ต๋๋ค. ๊ฐ์ ์น๊ตฌ๋ค์ด ์๋ ๊ฒ ๊ฐ์ฃ ?
@jhabdas ์๋ ๊ทธ๋ค์ ๋์ผํ์ง ์์ต๋๋ค
@dantman ๋ค์์ ๊ธฐ๋ณธ ์ง์์ ๋ฌ์ฑํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ํ ์ ์๊ฐ์ ๋๋ค.
:hover
๊ท์น๊ณผ ๊ฐ์ ๊ฒ์ ์ ๊ฑฐํ๊ณ jss์์ ์์ค๋ ๊ตฌ๋ฌธ์ ๋ค์ ์ป์ ์ ์์ต๋๋ค.cascade
๋ฐ inherit
์ํ์ผ๋ก ๊ณต๊ธ์์ ์๋น์์๊ฒ ์ตํธ์ธํ ์ ์์ต๋๋ค.@shoutem/theme
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ ์ธํ๊ณ ์ง๋์น๊ฒ ์๊ฒฉํ API์ ์ฌ์ ์ํ ์ ์๋ ์คํ์ผ ๋๋ฌธ์ ๊ณ ํต์ค๋ฝ๊ฑฐ๋ ์ฌ์ฉํ ์ ์์์ต๋๋ค(์: ๊ธฐ๋ณธ ๊ธฐ๋ฐ) .์์ง ์ด ์ง์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ์น์์๋ ๋ฉ์ง๊ฒ ์ฌ์ฉํ์ง๋ง ๋ชจ๋ฐ์ผ์์๋ ๊ฐ๋ฐํฉ๋๋ค!
๋ค์ดํฐ๋ธ ๋ฐ์ ์ง์์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
@oliviertassinari ์์์ ์ค๋ช ํ ๊ตฌํ ๊ฒฝ๋ก๋ฅผ ๋ถ๊ธฐํ๊ณ ํ์์ ์์ํ๋ ค๊ณ ํฉ๋๋ค. ๋ด ์ฐ์ ์์๋ ๋ค๋ฅธ ํ๋ก์ ํธ์ ํ์ํ ๊ตฌ์ฑ ์์๋ฅผ ์๋์ํค๋ ๊ฒ์ด๋ฏ๋ก ๊ณง ๊ฐ๋ ฅํ React Native ์ง์์ PRํ์ง ์์ ๊ฒ์ด์ง๋ง ๊ฐ๋ฅํ ํ ๋ง์คํฐ์ "๋๊ธฐํ"๋๋๋ก ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค. ์ธ์ ๊ฐ๋ ์ ์ฉํ ๊ฒ์ ๋๋ค(๋๋ ๋ณํฉ๋ ์ ์์).
@micimize ์๋ ค ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด ํ๋ก์ ํธ์์ ํ์ด์ ๋น๋๋ค! :) ์ฐ๋ฆฌ๊ฐ ์์ง ๋ฐ์ ๋ค์ดํฐ๋ธ์ ๋ํด ์์ ํ์ง ์์ ์ด์ ์ ๋ํด. ๋ค์ํ ๋ง์ผ๋ก ๋์ค๋ ๊ฒ ๊ฐ์์. ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๊ทธ๋ ๊ฒ ํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ ํต์ฌ ๊ด๋ฆฌ์๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ดํดํ ์ ์์ต๋๋ค. react-dom ์ฌ์ฉ์ react-native๋ณด๋ค ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๊ณ ์ด๋ ต์ต๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ: ๋ชฉ๋ก, ๋ฒํผ, ์นด๋, ์์ด์ฝ, ์ ํ ์ปจํธ๋กค, ํ ์คํธ ํ๋ ๋ฐ ๋ฐฐ๊ฒฝ์ ํฌํจํ์ฌ ์๋นํ ๊ธฐ๋ฅ ๋ฉ์ด๋ฆฌ๋ฅผ ๋ค์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ์ต๋๋ค. ๋ถํํ๋, ์ฐ๋ฆฌ๊ฐ ๋ง์นจ๋ด ๋ฐ์ ๋ค์ดํฐ๋ธ์์ ์ฑ ์์ฒด๋ฅผ ๊ฐ๋ฐํ๊ฒ ๋์ ์๋ง์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์ฐ๋ฆฌ๋ Flutter๋ก ์ฎ๊ฒจ์ผ ํ์ต๋๋ค.
์ธ์ ๊ฐ๋ ๋์๊ฐ์ ์ฐ๋ฆฌ๊ฐ ํ ์์
์ค ์ผ๋ถ๋ฅผ ๋ณต๊ตฌํ๊ณ ์ถ์ต๋๋ค. ์ฃผ๋ก css-shorthand-properties ๋ฐ ๊ธฐํ ๊น๋ํ ๊ฒ๋ค์ ํ์ฉํ withStyles / classes
์คํ์ผ๋ง ์๋ฃจ์
์ ํฌํธ์ง๋ง ๋ ์ด์ ์ฐ์ ์์๊ฐ ์๋๋๋ค. ๋๋ฅผ์ํ.
@rogerstorm ์ 200๋ฌ๋ฌ๋ก ์ด ๋ฌธ์ ์ ์๊ธ์ ์ง์ํ์ต๋๋ค. IssueHunt์์ ํ์ธํ์ธ์.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ๊ธฐํ ๋น์ฉ์ด ๋ ๊ฒ์ ๋๋ค. ๋ซ๊ณ ์์ด์. ๋ธ๋ผ์ฐ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ ์ ์ง์ํ๊ธฐ ์ํด ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค.
@oliviertassinari , ๋ฐ์ ๋ค์ดํฐ๋ธ ์ง์์ด ๋ฒ์๋ฅผ ๋ฒ์ด๋ฌ๊ณ ๊ฐ๊น์ด ๋ฏธ๋(์: 1๋ )์ ๋ ์ด๋์
๋ค
https://github.com/lightningtgc/react-native-material-ui ๋ ๋ค๋ฅธ ์ฌ๊ธฐ npm ํจํค์ง์ ๋ถ๊ณผํฉ๋๋ค
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@rogerstorm ์ 200๋ฌ๋ฌ๋ก ์ด ๋ฌธ์ ์ ์๊ธ์ ์ง์ํ์ต๋๋ค. IssueHunt์์ ํ์ธํ์ธ์.