๊ด€๋ฆฌ ๋ฉ”๋‰ด

yeon's ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป

[React-Native ๊ธฐ์ดˆ ๊ฐ•์˜] Modal ๋ณธ๋ฌธ

Computer ๐Ÿ’ป/React

[React-Native ๊ธฐ์ดˆ ๊ฐ•์˜] Modal

yeon42 2021. 7. 22. 21:36
728x90
Modal

- ํ™”๋ฉด ๊ฐ€์žฅ ์œ„์— ํ‘œ์‹œ๋  Layer

ex) ์œ ์ €๊ฐ€ ๊ด‘๊ณ ๋ฅผ ๊ผญ ๋ณด๊ฒŒ๋” ๊ด‘๊ณ ๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๋’ค๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์—†๋Š” ํ™”๋ฉด ์ƒ์„ฑ,

      ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋‹ค๋ฅธ ์ž‘์—… ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๊ฒฝ๊ณ ์ฐฝ ๋„์šฐ๊ธฐ

 

 


 

- ์ผ๋‹จ ์ด์ „๊ณผ ๋˜‘๊ฐ™์ด ... App.js์—์„œ ํ•ด๋‹น js ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ณ , ์•„๋ž˜์— <Modal> ํƒœ๊ทธ๋ฅผ ์ง‘์–ด ๋„ฃ๊ณ  ์‹œ์ž‘

 

 

  • handleModal : Modal์˜ ์ƒํƒœ๊ฐ€ true์ธ์ง€ false์ธ์ง€, ์ฆ‰ ํ™”๋ฉด ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” layer์„ ๋งŒ๋“ค์ง€ ์•ˆ ๋งŒ๋“ค์ง€ ๊ฒฐ์ •
class ModalComponent extends Component {
    state = {
        modal: false
    }

    handleModal = () => {
        this.setState({
            modal: this.state.modal ? false : true
        })
    }

- ์ดˆ๊ธฐ modal ๊ฐ’์„ false๋กœ ๋‘๊ณ ,

- handleModal ํ•จ์ˆ˜์—์„œ modal ๊ฐ’์ด true์ด๋ฉด false๋กœ, false์ด๋ฉด true๋กœ ๋ฐ”๊พธ๋Š” ์ž‘์—…์„ ํ•œ๋‹ค.

 

    render() {
        return (
            <View stlye={{width: '100%'}}>
                <Button
                    title="Open Modal"
                    onPress={this.handleModal}
                />

                <Modal>
                    <View style={{
                        marginTop: 60,
                        backgroundColor: 'red'
                    }}>
                        <Text>This is modal content</Text>
                    </View>
                </Modal>
            </View>

        )
    }

 

- <View> ํƒœ๊ทธ ์•ˆ์— <Button>์„ ์ƒ์„ฑํ•˜์˜€์ง€๋งŒ ๋ฒ„ํŠผ์€ ๋ณด์ด์ง€ ์•Š๊ณ , <Modal> ์•ˆ์— ๋งŒ๋“  View๋งŒ ๋ณด์ธ๋‹ค.

  -> ์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ Modal ํ™”๋ฉด์€ ๋ณด์ด๋„ค ..? -> ์šฐ๋ฆฌ๊ฐ€ state ํ•จ์ˆ˜๋ฅผ ์•ˆ ์ผ๊ธฐ ๋•Œ๋ฌธ!!!

 

 

<Modal
    	visible={this.state.modal}
>

- visible์ด ture์—ฌ์•ผ์ง€๋งŒ Modal์ด ๋ณด์ธ๋‹ค.

- state.modal ์ดˆ๊ธฐ๊ฐ’์ด false์ด๋ฏ€๋กœ, ๋ฒ„ํŠผ์„ ํ•œ ๋ฒˆ ๋ˆŒ๋Ÿฌ์•ผ true๋กœ ๋ฐ”๋€Œ์–ด Modal ํ™”๋ฉด์ด ๋ณด์ผ ๊ฒƒ์ด๋‹ค.

 

- but, ์•„์ง ๋’ค๋กœ ๋Œ์•„๊ฐˆ ๋ฐฉ๋ฒ•์ด ์—†๋‹ค.

 

<Button
		title="Go Back"
		onPress={this.handleModal}
/>
</Modal>

- ์•„๋ž˜์— <Button> ํ•˜๋‚˜ ๋” ๋งŒ๋“ค๊ธฐ

- handleModal ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด false -> true -> false -> ture ... ๊ฐ€ ๋ฐ˜๋ณต๋œ๋‹ค.

 

 

 


 

 

  • animationType

- slider : ๋ชจ๋‹ฌ ์ฐฝ์ด ์•„๋ž˜์—์„œ ์œ„๋กœ ๋‚˜์˜ด

- fade : fade ํšจ๊ณผ๋กœ ๋ชจ๋‹ฌ ์ฐฝ์ด ๋œธ

- none : default ๊ฐ’

<Modal
      visible={this.state.modal}
      animationType={'slider'} // slider, fade
>

 

 

  • onShow : ๋ชจ๋‹ฌ ์ฐฝ์ด ๋–ด์„ ๋•Œ trigger๋˜๋Š” property
<Modal
      visible={this.state.modal}
      animationType={'slider'} // slider, fade
      onShow={()=>alert('Warning!!!')}
>

- ๊ฐ„๋‹จํžˆ alert ์ฐฝ์œผ๋กœ ํ™•์ธํ•ด๋ณด๊ธฐ

Comments