评论列表案例-将评论列表组件和评论项组件抽离为单独的组件
//使用function构造函数,定义普通的无状态组件
function CmtItem(props) {…}
//使用class关键字,定义父组件
class Cmtlist extends React.Component{…}
两个组件都已经写在了入口文件中,接下来要想办法把这两个组件抽离出去。
对于 function :
在 components文件下新建一个 CmtItem.jsx 将代码完整的放到里面:
//使用function构造函数,定义普通的无状态组件
function CmtItem(props){
return <div>
<h1>评论人: {props.user}</h1>
<p>评论内容:{props.content}</p>
</div>
}
它是一个组件,必须依赖 import React from ‘react’
文件有自己的独立作用域,外界访问不到,创建 export default。
对于 Class :
在首页中 CmtList 中用到了 Item 项,就要先导入过来:
//导入评论项子组件
import CmtItem from './ components/CmtItem'保存。
然后将
//使用class关键字,定义父组件
cLass CmtList extends React.Component { …}也抽离出去。
在components目录新建 CmtList.jsx 将代码完成带入:
class CmtList extends React.Component {
iconstructor() {
super()
this.state = {
CommentList: [l/评论列表数据
{ id: 1, user:‘张三' ,content:‘哈哈,沙发’},
{ id: 2, user: ‘李四',content: ‘哈哈,板凳’},
{ id: 3, user: '王五', content:‘哈哈,凉席’},
{ id: 4,user:'赵六' , content:‘哈哈,砖头’},
{ id: 5,user:'田七', content:‘哈哈,楼下山炮’}
]
}
这里也需要依赖 import React from 'react',外界访问不到也需要 export default
因为代码中会用到 CmtItem,所以需要先导入:
//导入评论项子组件
import CmtItem from ./ components/CmtItem '
在cmtlist.jsx 中需要访问 cmtitem,现在 cmtlist.jsx 与 cmtitem.jsx 是平级的,所以路径需要改为:
import CmtItem from './CmtItem'