前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React 学习:综合实例-留言本

React 学习:综合实例-留言本

作者头像
爱明依
发布2019-04-27 20:55:57
5720
发布2019-04-27 20:55:57
举报
文章被收录于专栏:爱明依爱明依

版权声明:欢迎关注博主公众号:矿洞程序员 https://blog.csdn.net/qq_32423845/article/details/89332424

1、评论列表CommentList.js

重点掌握遍历循环数组的方式

代码语言:javascript
复制
​
import React from  'react'


const CommentList=({ comments }) => {
    return (
        <div className="comment-list-component">
            <label>评论列表</label>
            <ul>
                {
                    comments.map((comment,index) =>
                        <li key={index} className="list-group-item" >{comment}</li>
                    )
                 }
            </ul>
        </div>
    )
}

// class CommentList extends React.Component{
//
//
// }
export default CommentList

​

2、评论输入框的改造CommentBox.js

重点掌握:函数绑定bind(this)  输入框值域获取ref 

构造器参数props 既可以绑定数组 还可以绑定函数

代码语言:javascript
复制
import React from 'react'

class CommentBox extends React.Component{

    constructor(props){
        super(props);
        // this.state={
        //     value:''
        // }
        // this.handlerChange=this.handlerChange.bind(this)
        this.handlerSubmit=this.handlerSubmit.bind(this)
    }
    // handlerChange(event){
    //     this.setState({
    //         value:event.target.value
    //     })
    // }
    handlerSubmit(event){
        // alert(this.textInput.value)
        this.props.onAddComment(this.textInput.value)
        event.preventDefault()
    }
    render(){
        return (
            <form className="p-5" onSubmit={this.handlerSubmit}>
                <div className="form-group">
                    <label>留言内容</label>
                    <input type="text" className="form-control" placeholder="请输入内容" ref={(textInput)=>{this.textInput=textInput}}/>
                </div>
                <button type="submit" className="btn btn-primary">留言</button>
                <p>已有{this.props.commentsLength}条评论</p>
            </form>
        )
    }
}

export default CommentBox

3、App.js 里引用使用

重点掌握:动态改变class里 state 的数据。语法掌握... this.state.comments,comment

代码语言:javascript
复制
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
import NameCard from './components/NameCard';
import LikesButton from './components/LikeButton';
import DigitalClock from './components/DigitalClock';
import CommentList from './components/CommentList'
import CommentBox from './components/CommentBox';
  const tags=['男神']
class App extends Component {
    constructor(props){
        super(props)
        this.state={
            comments:['this is my first reply']
        }
        this.addComment=this.addComment.bind(this)
    }
    addComment(comment){
        this.setState({
           comments:[...this.state.comments,comment]
        })
    }

  render() {
        const {comments}=this.state
    return (
      <div className="App">
         <div className={"App-header"}>
             <img src={logo} className={"App-logo"} alt={"logo"}/>
             <h2>欢迎来到矿洞程序员</h2>
             <NameCard name="chenxiaoyang" number={123456} isHuman tags={tags} />
             <LikesButton/>
             <DigitalClock/>
             <CommentList comments={ comments }/>
             <CommentBox
                 commentsLength={ comments.length}
                 onAddComment={this.addComment}
             />
          </div>
         </div>
    );
  }
  }

export default App;

4、效果查看:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年04月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档