首页 > 其他分享 >好客租房44-react组件基础综合案例-5发表评论-1

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

时间:2023-03-21 12:33:38浏览次数:62  
标签:content name userContent 44 comments react state 评论 好客


发表评论

1给按钮绑定点击事件

2在事件处理程序中 通过state获取评论信息

3将评论信息添加到state中 并调用setState()方法更新数据

//导入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]
this.setState({
comments:newComents
})
}
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'))


 

标签:content,name,userContent,44,comments,react,state,评论,好客
From: https://blog.51cto.com/u_15460007/6140111

相关文章

  • 好客租房42-react组件基础综合案例-渲染列表无数据并优化
    渲染列表评论1判断列表数据的长度是否为02如果为0则渲染暂无评论//导入reactimportReactfrom'react'importReactDOMfrom'react-dom'//导入组件//约定1:类组件必......
  • 好客租房41-react组件基础综合案例-渲染列表数据
    1渲染列表在state定义数据进行数据渲染//导入reactimportReactfrom'react'importReactDOMfrom'react-dom'//导入组件//约定1:类组件必须以大写字母开头//约定2:......
  • 好客租房36-表单处理(3受控组件的示例)
    实例1文本框富文本框下拉框2复选框//导入reactimportReactfrom'react'importReactDOMfrom'react-dom'//导入组件//约定1:类组件必须以大写字母开头//约......
  • 好客租房35-表单处理(2受控组件使用步骤)
    步骤1state中加个状态2给表单绑定一个chang事件改变表单的值设置state//导入reactimportReactfrom'react'importReactDOMfrom'react-dom'//导入组件//约定......
  • swagger-ui-react 前端引用草稿
    前言SwaggerUI是一个React组件,它接受一个配置对象作为其唯一的属性。这个配置对象可以包含多个属性来自定义SwaggerUI的行为和外观。以下是SwaggerUI支持的主要属性及其说......
  • react的diff算法
    diff策略React用三大策略将O(n^3)复杂度转化为O(n)复杂度策略一(treediff):WebUI中DOM节点跨层级的移动操作特别少,可以忽略不计。策略二(componentdiff):拥有相......
  • [React] Flushing state updates synchronously with flushSync
    InReact,everyupdateissplitintwophases:During render, Reactcallsyourcomponentstofigureoutwhatshouldbeonthescreen.During commit, React......
  • 11113344
    世界上没有一个静止不动的时刻,技术也在不断地变化,那么,作为开发者和博主,我们如何才能跟上时代的步伐?答案很简单,就是不被定义,不受限制,勇于追求自己想要成为的样子。人生当中,我......
  • loj6144「2017 山东三轮集训 Day6」C
    loj6144「2017山东三轮集训Day6」C注意到修改只有位运算,容易想到将位拆开考虑。首先可以发现对某一位或上\(0\)或者是对某一位与上\(1\)是没有意义的,相当于没有操作......
  • #yyds干货盘点 【React工作记录二十七】moment处理日期格式
     目录​​前言​​​​导语​​​​解决思路​​​​总结​​前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五......