【React Native】 앱 개발 미경험의 프런트 엔드 엔지니어가 ToDo 리스트를 만들어 본다
13372 단어 reactnative앱 개발React앱초보자
소개
평상시는 Angular등에서 Web어플리케이션을 개발하고 있는 나입니다만, 갑자기 React Native 를 배우고 싶어졌으므로, 도연히 이 기사를 쓰기 시작했습니다.
↓ 느낌의 ToDo 목록을 만듭니다.
최종 성과물은 이쪽입니다.
todo-sample
이 기사에서 이해
베스트 프랙티스적인 녀석이라든지, 이런 응용적인 사용법을 해 주었어! 그런 것은 전혀 쓰지 않습니다.
우선 설치하지 않으면 시작되지 않습니다.
React Native에는 "node"과 "watchman"이 필요하기 때문에 빨리 설치합니다.
brew install node
brew install watchman
이어 React Native 본체를 설치합니다.
npm install -g react-native-cli
프로젝트를 만들고 시작해보기
react-native init Todo
cd Todo
react-native run-ios
이 화면이 표시되면 시작 성공입니다.
그건 그렇고, 시뮬레이터에서 "Command + D → Debug JS Remotely"를 선택하면 개발자 도구로 디버깅 할 수 있으므로 기억하는 것이 좋습니다.
쉽게 설계
이 후에는 「index.ios.js」에 처리를 준준 써 가면 어떻게든 상당히 보입니다만, 모처럼이므로 손을 움직이기 전에 필요한 Class는 어떤 느낌이 될지 생각해 보겠습니다.
brew install node
brew install watchman
npm install -g react-native-cli
react-native init Todo
cd Todo
react-native run-ios
이 화면이 표시되면 시작 성공입니다.
그건 그렇고, 시뮬레이터에서 "Command + D → Debug JS Remotely"를 선택하면 개발자 도구로 디버깅 할 수 있으므로 기억하는 것이 좋습니다.
쉽게 설계
이 후에는 「index.ios.js」에 처리를 준준 써 가면 어떻게든 상당히 보입니다만, 모처럼이므로 손을 움직이기 전에 필요한 Class는 어떤 느낌이 될지 생각해 보겠습니다.
화면을 둘러싸는 Container. TodoList와 Footer가 있습니다.
TodoList 전체. TodoListItem을가집니다.
TodoList 단위. Checkbox와 Todo를 표시하는 Text가 있습니다.
화면 하단에 고정된 Footer. textInput과 추가 버튼이 있습니다.
최저 이러한 Class가 있으면 어떻게든 상당히 보인다.
초기 데이터 표시
먼저 'index.ios.js'를 괴롭히고 TodoListContainer를 초기화합니다.
import React, { Component } from 'react';
import {
AppRegistry
} from 'react-native';
import TodoListContainer from 'Todo/src/TodoListContainer';
class Todo extends Component {
constructor(props) {
super(props);
}
render() {
return (
<TodoListContainer />
);
}
}
AppRegistry.registerComponent('Todo', () => Todo);
데이터는,Todo를 추가하는 처리를 하는 「Footer」와Todo를 묘화하는 「TodoList」의 교대적인 역할을 담당하는 「TodoListConainer」에 갖게 합니다.
this.state = {
todos: [
{text: 'Learn react native'},
{text: 'Make a to-do app'}
]
}
그런 다음 "TodoList"의 props에 데이터를 전달합니다.
state와 props는 아래가 참고가 됩니다.
React의 State와 Props의 차이
render() {
return (
<View style={{flex: 1}}>
<ScrollView
style={styles.base}
>
<TodoList
todos={this.state.todos} //TodoListのpropsにデータを渡す
/>
</ScrollView>
・・・
}
그런 다음 ReactNative에서 제공하는 컴포넌트인 'ListView'로 Todo를 그립니다.
constructor(props) {
super(props);
//ListViewで扱うデータ形式にする
this.dataSource = new ListView.DataSource({
rowHasChanged: (row1, row2) => row1 !== row2
});
}
render() {
return (
<ListView
dataSource={this.dataSource.cloneWithRows(this.props.todos)}
renderRow={(todo) => <TodoListItem {...todo} />}
renderSeparator={this.renderSeparator}
/>
);
}
render() {
return (
<View style={styles.todo}>
<CheckBox
isChecked={this.props.complete}
onClick={()=>this.onClick()}
/>
<Text style={[styles.text, this.state.isChecked ? styles.isTextDisabled : null]}>
{this.props.text}
</Text>
</View>
);
}
Checkbox는 다음 구성 요소를 사용했습니다.
react-native-check-box
Todo 추가
Todo의 추가는 「Footer」에 배치하고 있는 「추가」가 밀린 타이밍으로, 「TodoListContainer」의 state를 갱신해 실시합니다.
onAddPress() {
// TodoListContainerのaddTodoメソッドにtextを渡して実行
this.props.addTodo(this.state.text);
// Todo追加後はTextInputを空にする
this.setState({
text: ''
});
}
state에 세트한 배열에 새롭게 값을 추가할 때는, concat로 처리하는 것이 정석같기 때문에 그렇게 합니다.
addTodo(text) {
this.setState({
todos: this.state.todos.concat([{text: text}])
});
}
추가되었습니다! ∩( ・ω・)∩반잖아
결론
그런 이렇게 ToDo 리스트(ToDo의 삭제를 할 수 없는 것은 신경쓰지 않는다)가 완성되었습니다.
React.js를 어느 정도 알고 있으면 생각했던 것 이상으로 고속으로 개발할 수 있네요…
하고 있어서 좋았던 React.js.
Reference
이 문제에 관하여(【React Native】 앱 개발 미경험의 프런트 엔드 엔지니어가 ToDo 리스트를 만들어 본다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/daiend/items/9b7f2eada88ad0dd7c5c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【React Native】 앱 개발 미경험의 프런트 엔드 엔지니어가 ToDo 리스트를 만들어 본다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/daiend/items/9b7f2eada88ad0dd7c5c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)