create-react-app做的留言板
发布时间:2020-12-15 06:57:16 所属栏目:百科 来源:网络整理
导读:create-react-app做的留言板 先看一下我们的留言板,然后在去实现功能 做留言板首先要配置好我们的文件,然后才能接着做我们的留言板 快速开始: npminstall-gcreate-react-app /*安装create-react-app,建议使用cnpm*/create-react-appmyapp /*使用命令创建
create-react-app做的留言板先看一下我们的留言板,然后在去实现功能
做留言板首先要配置好我们的文件,然后才能接着做我们的留言板快速开始:npminstall-gcreate-react-app /*安装create-react-app,建议使用cnpm*/ create-react-appmyapp /*使用命令创建应用,myapp为项目名称*/ cdmyapp /*进入目录,然后启动*/ npmstart 接下来看看我们的代码吧index.html<body> <div id="app"> </div> <script src="/assets/bundle.js"></script> </body> index.jsimport React from 'react'; import ReactDOM from 'react-dom'; import LiuApp from './LiuApp'; import './bootstrap/dist/css/bootstrap.min.css'; ReactDOM.render(<LiuApp/>,document.getElementById("app")); LiuApp.jsimport React from 'react'; import LiuList from './LiuList'; import LiuForm from './LiuForm'; class LiuApp extends React.Component{ constructor(props){ super(props); this.ids=1; this.state={ todos:[] }; this.addItem=this.addItem.bind(this); this.deleteItem=this.deleteItem.bind(this); } deleteItem(id){ let newtodos=this.state.todos.filter((item)=>{ return !(item.id==id) }); this.setState({ todos:newtodos }); } addItem(value){ this.state.todos.unshift( { id:this.ids++,text:value,time:(new Date()).toLocaleString(),done:0 } ) this.setState({ todos:this.state.todos }); } render(){ return ( <div className="container"> <br/> <br/> <br/> <br/> <div className="panel panel-default"> <div className="panel-headingbg-danger"> <h1 className="text-center ">留言板</h1> <hr/> </div> <div className="panel-body"> <LiuList deleteItem={this.deleteItem} data={this.state.todos}/> <LiuForm addItem={this.addItem}/> </div> </div> </div> ); } } export default LiuApp; LiuList.jsimport React from 'react'; import LiuItem from './LiuItem'; class LiuList extends React.Component{ render(){ let todos=this.props.data; let todoItems=todos.map(item=>{ return <LiuItem deleteItem={this.props.deleteItem} key={item.id} data={item}/> }); return ( <table className="table table-striped"> <thead> <tr> <th>留言板</th> </tr> </thead> <tbody> {todoItems} </tbody> </table> ); } } export default LiuList; LiuForm.jsimport React from 'react'; class LiuForm extends React.Component{ tijiao(event){ event.preventDefault(); } add(event){ if(event.type=="keyup"&&event.keyCode!=13){ return false; } let txt=this.refs.txt.value; if(txt=="") return false; this.props.addItem(txt); this.refs.txt.value=""; } render(){ return( <form className="form-horizontal" onSubmit={this.tijiao.bind(this)}> <div className="form-group"> <div className="col-sm-10"> <input ref="txt" type="text" className="form-control" onKeyUp={this.add.bind(this)} id="exampleInputName2" placeholder="添加新留言"/> </div> <div className="col-sm-2"> <button type="button" className="btn btn-primary" onClick={this.add.bind(this)}>留言</button> </div> </div> </form> ); } } export default LiuForm; LiuItem.jsimport React from 'react'; class LiuItem extends React.Component{ delete(){ this.props.deleteItem(this.props.data.id); } render(){ let {text,time,done,id}=this.props.data; return ( <tr> <td>{time}<br/><br/>{text}</td> <td> <br/> <br/> <a onClick={this.delete.bind(this)}>删除留言</a> </td> </tr> ); } } export default LiuItem; 以上就是多有的代码,现在看看我们最终的结果
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Terark 联合 MongoDB改进WiredTiger
- Sqlite内存数据库在多线程下的使用问题
- sqlite3 学习 记录
- ruby-on-rails – 如何在update_attributes期间以管理员身份
- XmlPullParser解析xml文件(还原短信)
- C++中的const的简单用法
- oracle11g – libsqlplus.so:connot open共享对象文件:即
- C#3.0中的新增功能09 LINQ 标准查询运算符 01 概述
- c# – Code Contracts如何知道ToString覆盖不应该返回null?
- react-native – React Native错误:Raw“”必须包装在显式