728x90
반응형
이번 시간에는 버튼을 클릭하면 랜덤으로 숫자가 1~100까지 추가되고, 생성된 버튼을 누르면 삭제될 수 있도록 하는 이벤트를 배워보겠습니다.
App.js
이전 배열에서 추가되는 숫자를 넣기 위해 랜덤 변수를 생성하고, 배열에 append해줍니다.
onAddRandomNum = () => {
//alert('add random number');
const randomNum = Math.floor(Math.random()*100)+1;
this.setState(prevState => {
return {
random: [...prevState.random, randomNum]
}
})
}
숫자를 터치하면 숫자가 지워지도록 하기 위한 함수를 생성합니다.
filter 함수 특정 조건에 부합하는 요소만 뽑아내서 새 배열을 만들어주는 함수이다.
position과 index가 다른것만 뽑아서 새 배열을 만들어줌
setState를 활용해서 새로운 배열을 넣어준다.
onNumDelete = (position) => {
//filter 내장함수 : position과 index가 다른것만 뽑아서 새 배열을 만들어줌
const newArray = this.state.random.filter((num,index) =>{
return position != index;
})
//setState를 활용해서 새로운 배열을 넣어준다.
this.setState({
random: newArray
})
}
이제 이걸 배열조각으로 내려줄 것입니다.
전체 코드입니다.
class App extends Component{
state = {
appName: 'My first app',
random: [1,2,3,4,5]
}
//이전 배열에서 추가되는 숫자를 넣기 위해 랜덤 변수를 생성하고, 배열에 append해줍니다.
onAddRandomNum = () => {
//alert('add random number');
const randomNum = Math.floor(Math.random()*100)+1;
this.setState(prevState => {
return {
random: [...prevState.random, randomNum]
}
})
}
//숫자를 터치하면 숫자가 지워지도록 하기 위한 함수를 생성합니다.
onNumDelete = (position) => {
//alert('delete');
const newArray = this.state.random.filter((num,index) =>{
return position != index;
})
this.setState({
random: newArray
})
}
render(){
return (
<View style={styles.mainView}>
<Header name={this.state.appName}/>
<View>
<Text
style={styles.mainText}
onPress={()=>alert('text touch event')}
>hello world</Text>
</View>
<Generator add={this.onAddRandomNum}/>
<NumList
num={this.state.random}
//이제 이걸 배열조각으로 내려줄 것입니다.
delete={this.onNumDelete}
/>
</View>
)
}
}
numList.js 조작하기
배열 리스트에서 idx를 뽑아 올려준다. 이것은 App.js에서 position에 매핑된다.
const NumList = (props) => {
return(
props.num.map((item,idx) =>(
<TouchableOpacity
style={styles.numList}
key={idx}
onPress={()=>props.delete(idx)}
>
<Text>{item}</Text>
</TouchableOpacity>
))
)
}
728x90
반응형
'Dev > RN' 카테고리의 다른 글
10. [RN] 스크롤 뷰 추가해보기 (0) | 2021.02.01 |
---|---|
8. [RN] 목록 만들어보기 (0) | 2021.01.30 |
7. [RN] 버튼 만들어보기 (0) | 2021.01.29 |
6. [RN] state, props를 이용해 데이터 전달하기 (0) | 2021.01.28 |
5. [RN] 조각 붙이기 (0) | 2021.01.27 |