评论列表组件

import React from 'react'
import CMTItem from './CmtItem.jsx'
import CMTBox from './CmtBox.jsx' // 评论列表组件
export default class CMTList extends React.Component {
constructor(props) {
super(props)
this.state = {
list: [
{ user: 'zs', content: '123' },
{ user: 'ls', content: 'qqq' },
{ user: 'xiaohong', content: 'www' }
]
}
} // 在组件尚未渲染的时候,就立即 获取数据
componentWillMount() {
this.loadCmts()
} render() {
return <div>
<h1>这是评论列表组件</h1> {/* 发表评论的组件 */}
{/* 相对于 Vue 中,把 父组件传递给子组件的 普通属性 和 方法属性,区别对待, 普通属性用 props 接收, 方法 使用 this.$emit('方法名') */}
{/* react 中,只要是传递给 子组件的数据,不管是 普通的类型,还是方法,都可以使用 this.props 来调用 */}
<CMTBox reload={this.loadCmts}></CMTBox> <hr /> {/* 循环渲染一些评论内容组件 */}
{this.state.list.map((item, i) => {
return <CMTItem key={i} {...item}></CMTItem>
})}
</div>
} // 从本地存储中加载 评论列表
loadCmts = () => {
var list = JSON.parse(localStorage.getItem('cmts') || '[]')
this.setState({
list
})
}
}

评论显示

import React from 'react'

// 评论列表项组件
export default class CMTItem extends React.Component { render() {
return <div style={{ border: '1px solid #ccc', margin: '10px 0' }}>
<h3>评论人:{this.props.user}</h3>
<h5>评论内容:{this.props.content}</h5>
</div>
}
}

发表评论

import React from 'react'

// 评论列表框组件
export default class CMTBox extends React.Component { render() {
return <div>
<label>评论人:</label><br />
<input type="text" ref="user" /><br />
<label>评论内容:</label><br />
<textarea cols="30" rows="4" ref="content"></textarea><br /> <input type="button" value="发表评论" onClick={this.postComment} />
</div>
} postComment = () => {
// 1. 获取到评论人和评论内容
// 2. 从 本地存储中,先获取之前的评论数组
// 3. 把 最新的这条评论,unshift 进去
// 4. 在把最新的评论数组,保存到 本地存储中
var cmtInfo = { user: this.refs.user.value, content: this.refs.content.value }
var list = JSON.parse(localStorage.getItem('cmts') || '[]')
list.unshift(cmtInfo)
localStorage.setItem('cmts', JSON.stringify(list)) this.refs.user.value = this.refs.content.value = '' this.props.reload()
}
}

react-发表评论案例的更多相关文章

  1. 好客租房44-react组件基础综合案例-5发表评论-1

    发表评论 1给按钮绑定点击事件 2在事件处理程序中 通过state获取评论信息 3将评论信息添加到state中 并调用setState()方法更新数据 //导入react import React f ...

  2. 【 React -- 2/100 】使用React实现评论功能

    React| 组件化 | 递归 | 生成唯一ID 需要探究一下 .find() 和 findIndex() 的区别 import React from 'react' import './commen ...

  3. [课程设计]Sprint Three 回顾与总结&发表评论&团队贡献分

    Sprint Three 回顾与总结&发表评论&团队贡献分 ● 一.回顾与总结 (1)回顾 燃尽图: Sprint计划-流程图: milestones完成情况如下: (2)总结 本次冲 ...

  4. [课程设计]Sprint One 总结&发表评论&团队贡献分

    一.总结 第一次冲刺结束了,总体来说我们团队还是做得不错的,完成了既定的目标,希望接下来还能保持这样的动力,fighting... ● 二.围观其他组并发表评论 ● http://www.cnblog ...

  5. [课程设计]Sprint Two 回顾与总结&发表评论&团队贡献分

    [课程设计]Sprint Two 回顾与总结&发表评论&团队贡献分 ● 一.回顾与总结 (1)回顾 燃尽图: Sprint计划-流程图: milestones完成情况如下: (2)总结 ...

  6. Sprint Three 回顾与总结&发表评论&团队贡献分

    ● 一.回顾与总结 (1)回顾 燃尽图: Sprint计划-流程图: milestones完成情况如下: (2)总结 从sprint one到three,我们团队配合十分默契,互相帮助,虽然遇到了不少 ...

  7. 通过JS控制各种元素的点击事件的【时间间隔】,特别适合【发表评论】功能

    1.使用情景模拟:下单(防止用户无脑狂点).支付(防止用户无脑点击支付).发表评论(防止用户无脑点击),当然如果你用了一个提示框进行屏蔽,下面代码可以无视了,右上角谢谢. 2.默写情景比如:比如发表评 ...

  8. Android新浪微博获取评论信息、发表评论、转发微博等

    首先前面一节中说过,获取用户的微博信息,这里简单介绍下获取微博的评论信息,以及对微博进行评论,转发微博等. OAuth认证,这里就不多说了, 我说名一下接口: 获取微博的评论列表接口: http:// ...

  9. 使用react封装评论组件

    首先看我的效果图 我在评论框中输入数据,会在页面进行显示 这个效果图我们进行拆分就是,一个评论组件,一个大的评论列表组件,一个小的评论组件 首先整个页面中有的是我们的评论组件和列表组件 我们输入评论点 ...

随机推荐

  1. thinkphp v5.1.36 LTS 如果设置跨域访问

    修改route/route.php中的路由例如 Route::get('new/:id', 'News/read') ->ext('html') ->header('Access-Cont ...

  2. 联合索引在B+树上的存储结构及数据查找方式

    能坚持别人不能坚持的,才能拥有别人未曾拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! 引言 上一篇文章<MySQL索引那些事>主要讲了MySQL索引的底层原理,且对比了B ...

  3. Apache Solr JMX服务 RCE 漏洞复现

    Apache Solr JMX服务 RCE 漏洞复现 ps:Apache Solr8.2.0下载有点慢,需要的话评论加好友我私发你 0X00漏洞简介 该漏洞源于默认配置文件solr.in.sh中的EN ...

  4. 11种常用css样式之表格和定位样式学习

    table表格中border-collapse: collapse;/*表格边框是否合并*/border-spacing: 10px;/*表格边框之间的距离*/定位详情可以阅读position属性值4 ...

  5. Android中ProgressBar的使用-通过Handler与Message实现进度条显示

    场景 进度条效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改为 ...

  6. Jmeter后置处理器,正则表达式提取器的使用

    [使用场景]:下一个请求参数需要从上一个请求的响应数据中获取 [jmeter正则表达式说明]:使用perl正则表达式(可参考:http://www.runoob.com/perl/perl-regul ...

  7. 升级了NinjaLoveFish Excel量化表格

    为了方便查看均价和止盈值,新建了两列 这样做的好处就是,针对一个股票,可以实现不同的多个网格布局,然后分别实现各自的盈利设定. 例如这是网格1 那么同时也可以存在网格2 就可以实现多个网格布局到一个股 ...

  8. linux文件、文件夹操作

    1. pwd   查看当前所在的路径 2. ls   显示文件列表 ls -l   显示文件列表以及详情 ls -la   显示所有文件列表以及详情(包含隐藏文件) 注意:ls -l 相当于ll 例如 ...

  9. Jmeter连接数据库并使用数据表数据作为接口所需参数

    jmeter连接数据库,并且使用数据库的用户名密码进行登录操作,具体步骤如下: 1.参考博客<Jmeter连接SqlServer数据库并操作>进行相关内容的补充,修改JDBC Reques ...

  10. MySQL基础(6) | check约束

    MySQL基础(6) | check约束 前言 在一些情况下,我们需要字段在指定范围的输入, 例如:性别只能输入 '男'或者'女',余额只能大于0等条件, 我们除了在程序上控制以外,我们还能使用 CH ...