0%
tags: React
综合实例-留言本
状态提升和单向数据流
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
import React from "react"; import CommentBox from "./components/CommentBox"; import CommentList from "./components/Commentlist";
class App extends Component { constructor(props) { super(props); this.state = { commments: ["this id my first reply"], }; this.addComment = this.addComment.bind(this); }
addComment(comment) { this.setState({ comments: [...this.state.comment, comment], }); }
render() { const { comments } = this.state; return ( <div className="App"> <CommentList comments={comments} /> <CommentBox commentsLength={comments.length} onAddComment={this.addComment} /> </div> ); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import React from "react";
const CommentList = ({ comments }) => { return ( <div className="comment-list-component"> <label>评论列表</label> <ul className="list-group"> {comments.map((comment, index) => ( <li key={index} className="list-group-item"> {comment} </li> ))} </ul> </div> ); };
export default CommentList;
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| import React from 'react'
class CommentBox from React.Component { constructor(props){ super(props) this.handleSubmit = this.handleSubmit.bind(this) } handleSubmit(event){ alert(this.textInput.value) event.preventDefault() }
render(){ return ( <form onSubmit={this.handleSumit}> <div> <label>留言内容</label> <input type="text" className="form-control" placeholder="请输入评论" ref={(textInput) => {this.textInput = textInput}} /> </div> <button type="submit"> 留言 </button> <p>已有{this.props.commentLength = {this}}条评论</p> </form> ) } }
|
总结
React 开发思想以及和其他思想的异同