diff --git a/react_app/app.js b/react_app/app.js
index 8beee08..1ba0047 100755
--- a/react_app/app.js
+++ b/react_app/app.js
@@ -1,6 +1,7 @@
import React from 'react';
import ReactDOM from 'react-dom';
+import TodoApp from './components/TodoApp'
-ReactDOM.render(
React works!
,
+ReactDOM.render(,
document.getElementById('root'));
diff --git a/react_app/components/InputBar.js b/react_app/components/InputBar.js
new file mode 100644
index 0000000..ad97608
--- /dev/null
+++ b/react_app/components/InputBar.js
@@ -0,0 +1,33 @@
+import React from 'react';
+
+class InputBar extends React.Component {
+ constructor(props){
+ super(props);
+ this.state = {text: ''}
+ }
+
+ handleInput(e){
+ this.setState({text: e.target.value});
+ console.log(e.target.value)
+ }
+
+ handleSubmit(){
+ this.props.onSubmit(this.state.text);
+ this.setState({text: ''});
+ }
+
+ render(){
+ return (
+
+ this.handleInput(e)}
+ value={this.state.text}
+ />
+
+
+ );
+ }
+}
+
+export default InputBar;
diff --git a/react_app/components/Todo.js b/react_app/components/Todo.js
new file mode 100644
index 0000000..1cc8aaf
--- /dev/null
+++ b/react_app/components/Todo.js
@@ -0,0 +1,10 @@
+import React from 'react';
+
+function Todo(props){
+ if(props.isCompleted){
+ return props.onCheck()} /> {props.name} ;
+ }
+ return props.onCheck()} /> {props.name} ;
+}
+
+export default Todo;
diff --git a/react_app/components/TodoApp.js b/react_app/components/TodoApp.js
new file mode 100644
index 0000000..319517a
--- /dev/null
+++ b/react_app/components/TodoApp.js
@@ -0,0 +1,37 @@
+import React from 'react';
+import InputBar from './InputBar';
+import TodoList from './TodoList';
+
+class TodoApp extends React.Component {
+ constructor(props){
+ super(props);
+ this.state = {
+ data: [{name: 'Walk dog', isCompleted: false}, {name: 'Learn React', isCompleted: true}],
+ };
+ }
+
+ add(todoName) {
+ this.setState({
+ data: this.state.data.concat({name: todoName, isCompleted: false})
+ })
+ console.log('add went')
+ }
+
+ toggleCompleted(i) {
+ const newData = this.state.data.slice()
+ console.log(newData[i].isCompleted)
+ newData[i].isCompleted = !newData[i].isCompleted;
+ this.setState({data: newData});
+ }
+
+ render(){
+ return (
+
+ this.add(name)} />
+ this.toggleCompleted(i)} data={this.state.data} />
+
+ );
+ }
+}
+
+export default TodoApp;
diff --git a/react_app/components/TodoList.js b/react_app/components/TodoList.js
new file mode 100644
index 0000000..19813c6
--- /dev/null
+++ b/react_app/components/TodoList.js
@@ -0,0 +1,20 @@
+import React from 'react';
+import Todo from './Todo';
+
+class TodoList extends React.Component {
+ constructor(props){
+ super(props);
+ }
+
+ render(){
+ return (
+
+ {this.props.data.map((t, i) => {
+ return this.props.toggle(i)} index={i} name={t.name} isCompleted={t.isCompleted}/>;
+ })}
+
+ );
+ }
+}
+
+export default TodoList;