diff --git a/README.md b/README.md index e8a43c6..93c5a04 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +# basic-react-1902 + ## HT1.1 Сделать список комментариев, открывать/закрывать по нажатию на кнопку с помощью декоратора ## HT1.2 Подключить календарь с выбором диапазона дат, отображать диапазон текстом(https://github.com/gpbl/react-day-picker) ## HT1.3 для всего написать propTypes @@ -11,4 +13,5 @@ ## HT4.1 Сделать форму добавления коммента в CommentList ## HT4.2 Переписать articles редюсер на хранилище id -> статья(аналогично comments) ## HT4.3 Написать мидлвару для генерации случайных id -## HT4.4 Реализовать добавление коммента к статье \ No newline at end of file +## HT4.4 Реализовать добавление коммента к статье + diff --git a/package.json b/package.json index d2d8832..84f3b98 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "enzyme": "^3.3.0", "enzyme-adapter-react-16": "^1.1.1", "prop-types": "^15.6.0", + "randomstring": "^1.1.5", "react": "^16.2.0", "react-addons-css-transition-group": "^15.6.2", "react-day-picker": "^7.0.7", @@ -14,6 +15,7 @@ "react-scripts": "1.1.1", "react-select": "^1.2.1", "redux": "^3.7.2", + "redux-logger": "^3.0.6", "reselect": "^3.0.1" }, "scripts": { diff --git a/src/AC/index.js b/src/AC/index.js index dda2dd6..3ac8041 100644 --- a/src/AC/index.js +++ b/src/AC/index.js @@ -1,4 +1,7 @@ -import {INCREMENT, DELETE_ARTICLE, CHANGE_DATE_RANGE, CHANGE_SELECTION} from '../constants' +import { + INCREMENT, DELETE_ARTICLE, CHANGE_DATE_RANGE, CHANGE_SELECTION, ADD_NEW_COMMENT, + UPDATE_ARTICLE_COMMENTS +} from '../constants' export function increment() { return { @@ -26,3 +29,23 @@ export function changeSelection(selected) { payload: { selected } } } + +export function addNewComment(user, text, articleId) { + return { + type: ADD_NEW_COMMENT, + payload: { + data: {user, text}, + articleId + } + }; +} + +export function updateArticleComments(articleId, commentId) { + return { + type: UPDATE_ARTICLE_COMMENTS, + payload: { + articleId, + commentId + } + } +} diff --git a/src/components/add-new-comment-form.js b/src/components/add-new-comment-form.js new file mode 100644 index 0000000..942c0fc --- /dev/null +++ b/src/components/add-new-comment-form.js @@ -0,0 +1,79 @@ +import React, {Component} from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import { addNewComment } from '../AC'; + +class AddNewCommentForm extends Component { + + state = { + userName: '', + text: '' + }; + + static propTypes = { + articleId: PropTypes.string.isRequired, + addComment: PropTypes.func.isRequired + }; + + static defaultProps = {}; + + handleSubmit = (e) => { + e.preventDefault(); + this.props.addComment(this.state.userName, this.state.text, this.props.articleId); + this.setState({ + userName: '', + text: '' + }) + }; + + handleUsernameInput = (e) => { + this.setState({ + userName: e.target.value + }); + }; + + handleTextInput = (e) => { + this.setState({ + text: e.target.value + }); + }; + + render() { + return ( +
+
+
+
+ +

+
+
+
+