parent
366a01ab60
commit
d3645c30a0
@ -0,0 +1,27 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import CommentsList from './commentslist.jsx'
|
||||||
|
import CommentsForm from './commentsform.jsx'
|
||||||
|
|
||||||
|
class Comments extends React.Component {
|
||||||
|
constructor(props){
|
||||||
|
super(props);
|
||||||
|
this.state = {
|
||||||
|
comments: []
|
||||||
|
}
|
||||||
|
this.addComment = this.addComment.bind(this);
|
||||||
|
}
|
||||||
|
addComment(value){
|
||||||
|
this.state.comments.push(value); //this alone won't notify React to update the DOM
|
||||||
|
this.setState({
|
||||||
|
comments: this.state.comments
|
||||||
|
});
|
||||||
|
}
|
||||||
|
render(){
|
||||||
|
return <section>
|
||||||
|
<CommentsList comments={this.state.comments}></CommentsList>
|
||||||
|
<CommentsForm handleSubmit={this.addComment}></CommentsForm>
|
||||||
|
</section>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Comments;
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
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>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default CommentsForm;
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
class CommentsList extends React.Component {
|
||||||
|
render(){
|
||||||
|
return <ul>
|
||||||
|
{this.props.comments.map((comment, index) =>
|
||||||
|
<li key={index}>{comment}</li>
|
||||||
|
)}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default CommentsList;
|
||||||
@ -1,7 +1,8 @@
|
|||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import Comments from './components/comments.jsx';
|
||||||
|
|
||||||
ReactDOM.render(
|
ReactDOM.render(
|
||||||
<h1 className="foo">Hello, world!</h1>,
|
<Comments></Comments>,
|
||||||
document.querySelector('main')
|
document.querySelector('main')
|
||||||
);
|
);
|
||||||
|
|||||||
@ -1,18 +0,0 @@
|
|||||||
const myFunc = function(){
|
|
||||||
console.log('included!');
|
|
||||||
}
|
|
||||||
|
|
||||||
export default myFunc;
|
|
||||||
|
|
||||||
const myFunc2 = function(){
|
|
||||||
console.log('also included');
|
|
||||||
}
|
|
||||||
|
|
||||||
const unnecessary = function(){
|
|
||||||
console.log('unnecessary');
|
|
||||||
}
|
|
||||||
|
|
||||||
export {
|
|
||||||
myFunc2,
|
|
||||||
unnecessary as omitme
|
|
||||||
}
|
|
||||||
Loading…
Reference in new issue