react发布评论

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css'

class Hello extends React.Component {
  constructor() {
    super()

    this.state = {
      userName: '',
      userContent: '',
      comments: [
        {
          id: 1,
          name: 'jack',
          content: '12312312'
        }
      ]
    }
  }
  // 渲染列表评论
  renderContent() {
    if (this.state.comments.length === 0) {
      return <h2>暂无评论,抓紧评论吧</h2>
    }
    return (
      <ul>
        {
          this.state.comments.map(item =>
          (<li key={item.id}>
            <h2>发表人:{item.name}</h2>
            <p>发表内容:{item.content}</p>
          </li>
          ))
        }
      </ul>
    )
  }
  // 监听输入框和文本框值改变
  changeForm = (e) => {
    let { name, value } = e.target
    this.setState({
      [name]: value
    })
  }
  // 发表评论时做出的处理
  postComment = () => {
    let { userName, userContent, comments } = this.state
    if(userName===''||userContent===''){
      return alert('请输入评论人和评论内容')
    }
    // 定义一个新数组,添加到新数组
    let newComments = [{
      id: Math.random(),
      name: userName,
      content: userContent,
    }, ...comments]
    // 将新数组更新给绑定数组
    this.setState({
      comments: newComments,
      userName: '',
      userContent: ''
    })
  }
  render() {
    let { userName, userContent } = this.state
    return (
      <div className='div'>
        <div>
          <input className='userName' type='text' value={userName} name='userName' placeholder='请输入评论人' onChange={this.changeForm}></input>
          <br />
          <textarea className='userContent' value={userContent} name='userContent' rows={7} placeholder='请输入评论' onChange={this.changeForm}></textarea>
          <br />
          <button onClick={this.postComment}>发表评论</button>
        </div>
        {this.renderContent()}
      </div>
    )
  }
}
ReactDOM.render(<Hello />, document.getElementById('root'))
.div{
  width: 500px;
  padding: 20px;
  border: 1px solid #333;
}
.userName {
  width: 480px;
  height: 25px;
  margin-bottom: 10px;
}

.userContent{
  width: 480px;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值