References: Creating your first app
미티어 프레임워크에서 리액트를 사용해 봅시다.
1. 프로젝트 만들기
콘솔창에 다음과 같이 입력합니다: meteor create --react react-todoes
이후 cd react-todoes입력 후 meteor를 입력하면 알아서 필요한 작업을 진행 한 후 실행됩니다.
2. To-Do 리스트 만들기
본격적으로 소스를 수정해 보도록 하겠습니다.
/client/main.html
1 2 3 4 5 6 7 | <head> <title>Todo List</title> </head> <body> <div id="render-target"></div> </body> | cs |
/client/main.jsx
1 2 3 4 5 6 7 8 9 10 | import React from 'react'; import { Meteor } from 'meteor/meteor'; import { render } from 'react-dom'; import App from '../imports/ui/App'; Meteor.startup(() => { render(<App />, document.getElementById('render-target')); }); | cs |
/imports/ui/app.jsx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import React, { Component } from 'react'; import Task from './Task'; // App component - represents the whole app export default class App extends Component { getTasks() { return [ { _id: 1, text: 'This is task 1' }, { _id: 2, text: 'This is task 2' }, { _id: 3, text: 'This is task 3' }, ]; } renderTasks() { return this.getTasks().map((task) => ( <Task key={task._id} task={task} /> )); } render() { return ( <div className="container"> <header> <h1>Todo List</h1> </header> <ul> {this.renderTasks()} </ul> </div> ); } } | cs |
/imports/ui/Task.jsx
1 2 3 4 5 6 7 8 9 10 | import React, { Component } from 'react'; // Task component - represents a single todo item export default class Task extends Component { render() { return ( <li>{this.props.task.text}</li> ); } } | cs |
/client/main.css
위와 같이 코드를 수정하면 다음과 같은 화면을 확인할 수 있습니다.
3. 몽고DB에 데이터 저장하기.
할일 정보를 몽고디비에 저장합니다.
리액트 컴포넌트에서 미티어의 컬렉션 데이터를 사용하려면 react-meteor-data 패키지를 설치해야 합니다.
콘솔에 다음을 입력합니다: meteor add react-meteor-data
** 확인해보니 제 프로젝트에는 자동으로 깔려 있더군요
이후 소스코드를 아래와 같이 수정합니다.
/imports/ui/app.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import React, { Component } from 'react'; import { withTracker } from 'meteor/react-meteor-data'; import { Tasks } from '../api/tasks.js'; import Task from './Task'; // App component - represents the whole app class App extends Component { renderTasks() { return this.props.tasks.map((task) => ( <Task key={task._id} task={task} /> )); } render() { return ( <div className="container"> <header> <h1>Todo List</h1> </header> <ul> {this.renderTasks()} </ul> </div> ); } } export default withTracker(() => { return { tasks: Tasks.find({}).fetch(), }; })(App); | cs |
/imports/api/tasks.js
1 2 3 | import { Mongo } from 'meteor/mongo'; export const Tasks = new Mongo.Collection('tasks'); | cs |
/server/main.js
1 2 3 4 5 6 | import { Meteor } from 'meteor/meteor'; import '../imports/api/tasks.js'; Meteor.startup(() => { }); | cs |
여기까지 수정하셨으면 화면이 다음과 같이 바뀔 것 입니다.
이제 몽고디비에 데이터를 넣은 후 어떻게 보이는지 확인하겠습니다.
콘솔을 열고 다음을 입력해 주세요.
meteor mongo
db.tasks.insert({ text: "Hello world!", createdAt: new Date() });
그리고 화면을 확인해 봅시다.
'Programming > JavaScript' 카테고리의 다른 글
NodeJS - Meteor with React Tutorial (3) (0) | 2019.02.18 |
---|---|
NodeJS - Meteor with React Tutorial (2) (0) | 2019.02.18 |
NodeJS - Meteor 프레임워크 Blaze? React? (0) | 2019.02.15 |
NodeJS - Meteor Autopublish (0) | 2019.02.15 |
NodeJS - Meteor 프레임워크 사용해보기 (0) | 2019.02.15 |