React实现简易评论发布功能

知识点:

  1. 类组件的创建、渲染

  1. 条件渲染

  1. 列表渲染:使用map

  1. 解构赋值

  1. input、textarea受控组件

import React from "react";
import  ReactDOM  from "react-dom";

class App extends React.Component{
    state={
        txt:'',
        content:'',
        commit:[
            {id:1,name:'wuhu',content:'hhh'},
            {id:2,name:'yoho',content:'xxx'}
        ],

    }
    // 条件渲染
    commitBoard=()=>{
        // /解构赋值
        // const {commit}=this.state
        // 条件渲染
        if(this.state.commit.length){
            // 列表渲染
            return (
                <ul>
                    {
                        this.state.commit.map(item=>
                            (<li key={item.id}>
                                <h2>评论人:{item.name}</h2>
                                <p>评论:{item.content}</p>
                            </li>)
                         )  
                    }
                </ul>
                
            )
        }
        return (
            <div>暂无数据</div>
        )
    }
    // 箭头函数解决this指向问题
    handleChange=(e)=>{
        const {name,value}=e.target
        this.setState({
            [name]:value
        })
        
    }
    handleClick=()=>{
        const {txt,content,commit}=this.state
        let commits=commit
        if(this.state.txt)
            commits.push({id:Math.random(),name:txt,content:content})
        else
            alert('请输入内容')
        this.setState({
            commit:commits,
            txt:'',
            content:''
        })
    }
    render(){
        const {txt,content}=this.state
        return(
            <div>
                <div>
                    <input type="text" name="txt" value={txt} onChange={this.handleChange}></input>
                </div>
                <div>
                    <textarea name="content" value={content} onChange={this.handleChange}></textarea>
                </div>
                <div>
                    <button onClick={this.handleClick}>发表评论</button>
                </div>
                <div>{this.commitBoard()}</div>
            </div>
        )
    }
}

ReactDOM.render(<App />,document.getElementById('root'))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值