create-react-app 入门必备(1)
写在前面
本篇涉及知识点:
registerServiceWorker 模块
fragment模块( 占位符)
immutable (不变的)
JSX注释写法与JS区别
dangerouslySetInnerHtml={{__html: 值 }}
es6解构
组件的propTypes和defaultProps
image.png
PWA( 渐进式web应用程序)概念理解
progressive web application
registerServiceWorker 模块
这个文件可以视情况用或者不用,它是用来做离线缓存等任务的,实际上就是为react项目注册了一个service worker。这样的话,如果在线上,只要访问过一次该网站,以后即使没有网络也可以访问(此时使用的是之前缓存的资源)。只在生产环境中有效(process.env.NODE_ENV === ‘production’)
fragment模块( 占位符)
因为render返回必须要一个div包裹所有标签,当你不想要最外层多一个div包裹时,可以引入react里的一个组件fragment ,jsx语法里直接替换最外层div就可以
image.png
immutable (不变的)
规定state不允许任何改变,所以在我们对state进行改变时,需要拷贝,并做相应改值操作
JSX注释写法与JS区别
render(){
return (
)
}
dangerouslySetInnerHtml={{__html: 值 }}
可用于直接展示富文本
活用es6解构,可以避免代码冗余
子组件 ListItem
import React, {Component} from 'react';
class ListItem extends Component{
constructor(props){
super(props);
this.delItem = this.delItem.bind(this);
}
render(){
const {content} = this.props;
return(
{/*这是多行注释*/}
{
//这是单行注释
}
{/* 此处已经是JSX写法了 */}
{/* 评论列表 */}
)
}
// 删除item
delComment(index){
const newList = [...this.state.list];
newList.splice(index,1);
this.setState({
list:newList
})
}
// 新增评论
addComments(){
let list = [...this.state.list,this.state.value];
this.setState({
list:list,
value:''
})
}
// change监听input值
changeValue(e){
this.setState({
value:e.target.value
})
}
}
export default Comment;
组件的propTypes和defaultProps
image.png
-
{
this.state.list.map((item,index) => {
return (
发表评论 (审核通过后显示评论):