From fbf7a5452cb4283f89f07f6d133cdeaba2902419 Mon Sep 17 00:00:00 2001
From: Rodrigo Pedroso <>
Date: Wed, 19 Jun 2019 14:49:50 -0400
Subject: [PATCH] Sample jsx components. React-redux.
---
package.json | 3 +-
src/index.js | 22 +++++++++-----
src/js/components/App.jsx | 18 ++++++++++++
src/js/components/Form.jsx | 60 ++++++++++++++++++++++++++++++++++++++
src/js/components/List.jsx | 20 +++++++++++++
5 files changed, 114 insertions(+), 9 deletions(-)
create mode 100644 src/js/components/App.jsx
create mode 100644 src/js/components/Form.jsx
create mode 100644 src/js/components/List.jsx
diff --git a/package.json b/package.json
index 9b839ac..f9f8cff 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
},
"devDependencies": {
"react-redux": "^7.1.0",
- "redux": "^4.0.1"
+ "redux": "^4.0.1",
+ "uuid": "^3.3.2"
}
}
diff --git a/src/index.js b/src/index.js
index 08a2b71..c2e591e 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,14 +1,20 @@
-// import React from 'react';
-// import ReactDOM from 'react-dom';
-// import './index.css';
-// import App from './App';
-// import * as serviceWorker from './serviceWorker';
-import index from './js/index'
+import React from 'react'
+import ReactDOM from 'react-dom'
+// import './index.css'
+import { Provider } from 'react-redux'
+import store from './js/store/index'
+import App from './js/components/App.jsx'
+import * as serviceWorker from './serviceWorker'
-// ReactDOM.render(, document.getElementById('root'));
+ReactDOM.render(
+
+
+ ,
+ document.getElementById('root')
+)
// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://bit.ly/CRA-PWA
-// serviceWorker.unregister();
+serviceWorker.unregister();
diff --git a/src/js/components/App.jsx b/src/js/components/App.jsx
new file mode 100644
index 0000000..a154a6f
--- /dev/null
+++ b/src/js/components/App.jsx
@@ -0,0 +1,18 @@
+import React from 'react'
+import List from './List'
+import Form from './Form'
+
+const App = () => (
+
+
+
Articles
+
+
+
+
Add a new article
+
+
+
+)
+
+export default App
diff --git a/src/js/components/Form.jsx b/src/js/components/Form.jsx
new file mode 100644
index 0000000..f8abdec
--- /dev/null
+++ b/src/js/components/Form.jsx
@@ -0,0 +1,60 @@
+import React, { Component } from "react"
+import { connect } from "react-redux"
+import uuidv1 from "uuid"
+import { addArticle } from "../actions/index"
+
+function mapDispatchToProps(dispatch) {
+ return {
+ addArticle: article => dispatch(addArticle(article))
+ }
+}
+
+class ConnectedForm extends Component {
+ constructor() {
+ super()
+
+ this.state = {
+ title: ""
+ }
+
+ this.handleChange = this.handleChange.bind(this)
+ this.handleSubmit = this.handleSubmit.bind(this)
+ }
+
+ handleChange(event) {
+ this.setState({ [event.target.id]: event.target.value })
+ }
+
+ handleSubmit(event) {
+ event.preventDefault()
+ const { title } = this.state
+ const id = uuidv1()
+ this.props.addArticle({ title, id })
+ this.setState({ title: "" })
+ }
+
+ render() {
+ const { title } = this.state
+ return (
+
+ )
+ }
+}
+
+const Form = connect(null, mapDispatchToProps)(ConnectedForm)
+
+export default Form
diff --git a/src/js/components/List.jsx b/src/js/components/List.jsx
new file mode 100644
index 0000000..c163231
--- /dev/null
+++ b/src/js/components/List.jsx
@@ -0,0 +1,20 @@
+import React from "react"
+import { connect } from "react-redux"
+
+const mapStateToProps = state => {
+ return { articles: state.articles }
+}
+
+const ConnectedList = ({ articles }) => (
+
+ {articles.map(el => (
+ -
+ {el.title}
+
+ ))}
+
+)
+
+const List = connect(mapStateToProps)(ConnectedList)
+
+export default List