You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.4 KiB
50 lines
1.4 KiB
import React from 'react';
|
|
import { connect } from 'react-redux';
|
|
|
|
class CommentsForm extends React.Component {
|
|
constructor(props){
|
|
super(props);
|
|
this.handleSubmit = this.handleSubmit.bind(this);
|
|
}
|
|
handleSubmit(event){
|
|
event.preventDefault();
|
|
this.props.handleSubmit(this.refs.comment.value);
|
|
}
|
|
render() {
|
|
return <form onSubmit={this.handleSubmit}>
|
|
<input ref="comment" type="text" placeholder="Your Comment"/>
|
|
<input type="submit" value="Post Comment"/>
|
|
</form>
|
|
}
|
|
}
|
|
|
|
const mapDispatchToProps = function(dispatch){
|
|
return {
|
|
handleSubmit: function(body){
|
|
fetch(
|
|
'https://stupidcomments.herokuapp.com/comments',
|
|
{
|
|
headers: {
|
|
'Accept': 'application/json',
|
|
'Content-Type': 'application/json'
|
|
},
|
|
method: "POST",
|
|
body: JSON.stringify({ body:body })
|
|
}
|
|
).then(function(response){
|
|
response.json().then(function(data){
|
|
console.log(data);
|
|
dispatch({type:'ADD', comment: data.body });
|
|
});
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
const VisibleCommentsForm = connect(
|
|
null,
|
|
mapDispatchToProps
|
|
)(CommentsForm)
|
|
|
|
export default VisibleCommentsForm;
|