React-native-router-flux: ์žฅ๋ฉด ์ „ํ™˜์„ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ์• ๋‹ˆ๋ฉ”์ด์…˜

์— ๋งŒ๋“  2016๋…„ 07์›” 09์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: aksonov/react-native-router-flux

๋ฒ„์ „

  • ๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ๋ผ์šฐํ„ฐ ํ”Œ๋Ÿญ์Šค v3.26.13
  • ๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ v0.26.3

์žฅ๋ฉด ์ „ํ™˜ ์‹œ ๊ธฐ๋ณธ ์Šคํ”„๋ง ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์˜ˆ์ƒ๋ณด๋‹ค ์•ฝ๊ฐ„ ๋Š๋ ค์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํฌ์ธํ„ฐ๋ฅผ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”, ์—ฌ๊ธฐ์—์„œ rtl ์–ธ์–ด(์˜ˆ: ์•„๋ž์–ด, ์ „ํ™˜์ด ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋„๋ก)๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  rtlAwareAnimation(pos, navState) {
    const factor = I18n.rtl() ? -1 : 1;
    Animated.spring(
      pos,
      {
        bounciness: 0,
        toValue: factor*navState.index,
      }
    ).start();
  },

  render() {
    return (
      <Router>
        <Scene key="signIn" component={SignIn} title={I18n.t('signIn')} initial={true} applyAnimation={this.rtlAwareAnimation} />
        <Scene key="dashboard" component={Dashboard}applyAnimation={this.rtlAwareAnimation} />
      </Router>
    );

๊ทธ๋Ÿฌ๋‚˜ ์žฅ๋ฉด์ด ํŠน๋ณ„ํ•œ ์œ„์น˜์— ๋ฐฐ์น˜๋˜๋ฏ€๋กœ ์ „ํ™˜ ๋ฐฉํ–ฅ์ด ๋‹ค์Œ ์žฅ๋ฉด์ด ์žˆ๋Š” ์œ„์น˜์™€ ์ผ์น˜ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์—ฌ์ „ํžˆ ์œ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์œ„์—์„œ ์•„๋ž˜๋กœ ๋˜๋Š” ๊ทธ ๋ฐ˜๋Œ€๋กœ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? 1์ฐจ์›๋งŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ์ด๋ฏธ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐฉํ–ฅ์ด rightToLeft์ด๊ธฐ ๋•Œ๋ฌธ์— direction ์†์„ฑ์„ ์ œ๊ณตํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
import { I18nManager } from 'react-native'
let directionSide = I18nManager.isRTL ? 'leftToRight' : null
<Scene key='xXXXX' component={XXXXX} title='XXXXX' direction={directionSide}/>

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰