react-发表评论案例
评论列表组件
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-发表评论案例的更多相关文章
- 好客租房44-react组件基础综合案例-5发表评论-1
发表评论 1给按钮绑定点击事件 2在事件处理程序中 通过state获取评论信息 3将评论信息添加到state中 并调用setState()方法更新数据 //导入react import React f ...
- 【 React -- 2/100 】使用React实现评论功能
React| 组件化 | 递归 | 生成唯一ID 需要探究一下 .find() 和 findIndex() 的区别 import React from 'react' import './commen ...
- [课程设计]Sprint Three 回顾与总结&发表评论&团队贡献分
Sprint Three 回顾与总结&发表评论&团队贡献分 ● 一.回顾与总结 (1)回顾 燃尽图: Sprint计划-流程图: milestones完成情况如下: (2)总结 本次冲 ...
- [课程设计]Sprint One 总结&发表评论&团队贡献分
一.总结 第一次冲刺结束了,总体来说我们团队还是做得不错的,完成了既定的目标,希望接下来还能保持这样的动力,fighting... ● 二.围观其他组并发表评论 ● http://www.cnblog ...
- [课程设计]Sprint Two 回顾与总结&发表评论&团队贡献分
[课程设计]Sprint Two 回顾与总结&发表评论&团队贡献分 ● 一.回顾与总结 (1)回顾 燃尽图: Sprint计划-流程图: milestones完成情况如下: (2)总结 ...
- Sprint Three 回顾与总结&发表评论&团队贡献分
● 一.回顾与总结 (1)回顾 燃尽图: Sprint计划-流程图: milestones完成情况如下: (2)总结 从sprint one到three,我们团队配合十分默契,互相帮助,虽然遇到了不少 ...
- 通过JS控制各种元素的点击事件的【时间间隔】,特别适合【发表评论】功能
1.使用情景模拟:下单(防止用户无脑狂点).支付(防止用户无脑点击支付).发表评论(防止用户无脑点击),当然如果你用了一个提示框进行屏蔽,下面代码可以无视了,右上角谢谢. 2.默写情景比如:比如发表评 ...
- Android新浪微博获取评论信息、发表评论、转发微博等
首先前面一节中说过,获取用户的微博信息,这里简单介绍下获取微博的评论信息,以及对微博进行评论,转发微博等. OAuth认证,这里就不多说了, 我说名一下接口: 获取微博的评论列表接口: http:// ...
- 使用react封装评论组件
首先看我的效果图 我在评论框中输入数据,会在页面进行显示 这个效果图我们进行拆分就是,一个评论组件,一个大的评论列表组件,一个小的评论组件 首先整个页面中有的是我们的评论组件和列表组件 我们输入评论点 ...
随机推荐
- 献给即将35岁的初学者,焦虑 or 出路?
导言:“对抗职场“35 岁焦虑”,也许唯一的方法是比这个瞬息万变的商业社会跑得更快!” 一直以来,都有许多人说“程序员或测试员是个吃青春饭的职业”,甚至还有说“35 岁混不到管理就等于失业”的言论. ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.1)- FlexSPI NOR连接方式大全(RT1015/1020/1050)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1015/1020/1050三款MCU的FlexSPI NOR启动的连接方式. 由于i.MXRT内部没有非易失性存储 ...
- Linux内存管理解析(二) : 关于Linux内存管理的大体框架
什么是内存管理 ? 首先内存管理管理的主要对象是虚拟内存,但是虚拟内存对应的映射主要为物理内存,其次也可能通过交换空间把虚拟内存与硬盘映射起来,既然如此,那我们先了解物理内存的管理. 对于物理内存而言 ...
- 写入时复制(CopyOnWrite)
一.CopyOnWrite 思想 写入时复制(CopyOnWrite,简称COW)思想是计算机程序设计领域中的一种通用优化策略.其核心思想是,如果有多个调用者(Callers)同时访问相同的资源(如内 ...
- C#设计模式学习笔记:(13)模板方法模式
本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7837716.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲行为型设计模式的第一个模式--模 ...
- idea生成构造方法的快捷键(看这篇就够了)
使用快捷键能加快编写代码的速度和质量 idea生成构造方法的快捷键是Alt+Insert,然后选中Constructor
- 《HTML&CSS design and build websites》学习笔记(1)
Chapter 1: Structure Chapter 2: Text <head>表示标题,默认显示在第一行. <title>表示抬头,显示在浏览器的标签页,还有窗口栏. ...
- 清北学堂—2020.1提高储备营—Day 4 morning(数论)
qbxt Day 4 morning --2020.1.20 济南 主讲:李奥 目录一览 1.一些符号与基本知识 2.拓展欧几里得,逆元与欧拉定理 3.线性筛法与积性函数(非重点) 总知识点:数论 一 ...
- 10maven依赖继承、统一版本/编码
A > B > C A依赖于B,B依赖于C,如果A想间接依赖C,那么B和C之间的依赖范围必须是compile,不然A依赖不了C 但是有点麻烦,因为每次A想依赖于C都要确认B和C之间的 ...
- 【MVC+EasyUI实例】对数据网格的增删改查(上)
前言 此案例是针对之前做的一个小例子的后台框架的修改,从以前的三层框架改为现在的MVC框架,也是做了一次MVC和EasyUI的结合,分为2篇文章来阐述. 界面如下: 点击"添加"按 ...