边界问题

//导入react
import React from 'react'
import ReactDOM from 'react-dom'
//导入组件
// 约定1:类组件必须以大写字母开头
// 约定2:类组件应该继承react.component父类 从中可以使用父类的方法和属性
// 约定3:组件必须提供render方法
// 约定4:render方法必须有返回值
 
class HelloWorld extends React.Component {
    //初始化状态
    state = {
        comments: [
            {
                id: 1,
                name: 'geyao',
                content: '哈哈',
            },
            {
                id: 2,
                name: 'fangfang',
                content: '哈哈',
            },
            {
                id: 3,
                name: 'geyao',
                content: '哈哈',
            },
        ],
        userName: '',
        userContent: '',
    }
    //修改表单元素
    handleForm = (e) => {
        const { name, value } = e.target
        this.setState({
            [name]: value,
        })
    }
    //添加信息
    addComment=()=>{
        const { comments,userName, userContent } = this.state
        const newComents=[{
            id:Math.random(),
            name:userName,
            content:userContent
        },...comments]
        if(userName.trim()===""||!userContent.trim()===""){
            alert("评论人和评论列表不能为空")
            return false
        }
        this.setState({
            comments:newComents,
            userContent:"",
            userName:""
        })
    }
    render() {
        const { userName, userContent } = this.state
        return (
            <div className="app">
                <div>
                    <input
                        className="user"
                        type="text"
                        placeholder="请输入评论人"
                        value={userName}
                        name="userName"
                        onChange={this.handleForm}
                    />
                    <br />
                    <textarea
                        className="content"
                        cols="30"
                        rows="10"
                        placeholder="请输入评论列表"
                        value={userContent}
                        name="userContent"
                        onChange={this.handleForm}
                    ></textarea>
                    <br />
                    <button onClick={this.addComment}>发表评论</button>
                </div>
                {this.state.comments.length === 0 ? (
                    <div className="no-comment">暂无评论,快去评论吧~</div>
                ) : (
                    <ul>
                        {/* <li>
                        <h3>评论人:jack</h3>
                        <h3>评论内容:沙发</h3>
                    </li> */}
                        {this.state.comments.map((item) => (
                            <li key={item.id}>
                                <h3>评论人:{item.name}</h3>
                                <p>评论内容:{item.content}</p>
                            </li>
                        ))}
                    </ul>
                )}
            </div>
        )
    }
}
 
ReactDOM.render(<HelloWorld />, document.getElementById('root'))
运行结果

最新文章

  1. Android模拟器操作快捷键
  2. Jquery中去除左右空格
  3. 【POJ2352】【树状数组】Stars
  4. HDU 5009 Paint Pearls (动态规划)
  5. echarts配合循环计时器等出现的内存泄漏
  6. perl的USE和require
  7. 分类导航菜单的制作(附源码)--HTML
  8. Lua编写wireshark插件初探——解析Websocket上的MQTT协议
  9. BZOJ3638[Codeforces280D]k-Maximum Subsequence Sum&amp;BZOJ3272Zgg吃东西&amp;BZOJ3267KC采花——模拟费用流+线段树
  10. 【Eclipse】Eclipse 安装 SVN 插件的三种方法
  11. thinkphp5整合 gatewaywork实现聊天
  12. erlang otp中的socket参数设置
  13. Spark高级数据分析&#183; 6LSA
  14. Spring学习(一) IoC
  15. Docker安装和使用Tomcat
  16. Hadoop(20)-MapReduce框架原理-OutputFormat
  17. HIVE- 大数据运维之hive管理
  18. html5标签的兼容性处理
  19. Linux mm相关的问题
  20. 编译安装php、nginx

热门文章

  1. HTML5与HTML4区别简介
  2. javaweb之删除功能
  3. jsp+servlet上传excel并将数据导入到数据库表的实现方法
  4. .NET程序设计实验一
  5. Android 动态控制OptionMenu的显示与隐藏
  6. java中方法重载是什么, 实际中到底有什么意义, 用处?请举例
  7. uView的DatetimePicker详解
  8. android的布局xml文件如何添加注释?
  9. css实现超出部分显示省略号
  10. Java的虚拟线程(协程)特性开启预览阶段,多线程开发的难度将大大降低