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封装评论组件
首先看我的效果图 我在评论框中输入数据,会在页面进行显示 这个效果图我们进行拆分就是,一个评论组件,一个大的评论列表组件,一个小的评论组件 首先整个页面中有的是我们的评论组件和列表组件 我们输入评论点 ...
随机推荐
- light oj 1095 - Arrange the Numbers排列组合(错排列)
1095 - Arrange the Numbers Consider this sequence {1, 2, 3 ... N}, as an initial sequence of first N ...
- 珠峰-6-http和http-server原理
???? websock改天研究下然后用node去搞. websock的实现原理. ##### 第9天的笔记内容. ## Header 规范 ## Http 状态码 - 101 webscoket 双 ...
- linux中文件处理命令
目录 touch cat more less head tail touch 解释 命令名称:touch 命令所在路径:/bin/touch 执行权限:所有用户 功能描述:创建空文件 语法 touch ...
- vue使用JSEncrypt实现rsa加密及挂载方法
挂载全局方法 使用jsencrypt进行rsa加密 原文链接:Js参数RSA加密传输,jsencrypt.js的使用 - CSDN博客* https://blog.csdn.net/p31201115 ...
- 回炉重造之重读Windows核心编程-004-进程
进程是一个正在运行的程序的实例,由内核对象和地址空间组成.进程是不活泼的,执行地址空间中代码的是在它的环境中运行线程.每个线程都需要自己的一组CPU寄存器和堆栈. 为了让所有线程都能运行,操作系统就要 ...
- c++标准库与对应的函数
#include <algorithm> sort(obj.begin(),obj.end());//从小到大 reverse(obj.begin(),obj.end());//从大到小 ...
- jQuery---小火箭返回顶部案例
小火箭返回顶部案例 1. 滚动页面,当页面距离顶部超出1000px,显示小火箭. 封装在scroll函数里,当前页面距离顶部为$(window).scrollTop >=1000 小火箭显示和隐 ...
- 纪中17日T1 2321. 方程
纪中17日T1 2321. 方程 (File IO): input:cti.in output:cti.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ...
- Selenium实战(四)——unittest单元测试2(断言方法+discover()多测试用例的执行)
一.断言方法 方法 检查 版本 assertEqual(a,b) a==b assertNotEqual(a,b) a!=b assertTrue(x) bool(x) is True a ...
- C语言 if
C语言 if C语言支持最基本的三种程序运行结构:顺序结构.选择结构.循环结构. 顺序结构:程序按顺序执行,不发生跳转. 选择结构:依据是否满足条件,有选择的执行相应功能. 循环结构:依据条件是否满足 ...