react渲染列表的四种方式

注意:
class方式定义的组件名首字母大写,如:News

方式一(直接在html中渲染):

import React from 'react'

class News extends React.Component {
	constructor(props) {
        super(props); // 用于父子组件传值

        this.state = {
            info: [{
                    title:'第一个标题',
                    key:'第一个key'
                },{
                    title:'第二个标题',
                    key:'第二个key'
                },{
                    title:'第三个标题',
                    key:'第三个key'
                }]
        }
    }
    
	render () {
		return (
			<div className="news">
				<ul>
	                    {
	                        this.state.info.map((item, key) => {
	                            return (
	                                <li key={key}>
	                                    <p>{item.title}</p>
	                                    <p>{item.key}</p>
	                                </li>
	                            )
	                        })
	                    }
	             </ul>
			</div>
		)
	}
}

export default News;

方式二(以参数方式渲染) :

import React from 'react'

class News extends React.Component {
	constructor(props) {
        super(props); // 用于父子组件传值

        this.state = {
            info: [{
                    title:'第一个标题',
                    key:'第一个key'
                },{
                    title:'第二个标题',
                    key:'第二个key'
                },{
                    title:'第三个标题',
                    key:'第三个key'
                }]
        }
    }
    
	render () {
		let listItem_1 = this.state.info.map((item, key) => {
            return (
                <li key={key}>
                    <p>{item.title}</p>
                    <p>{item.key}</p>
                </li>
            )
        })
        return (
			<div className="news">
				<ul>
                    {listItem_1}
                </ul>
			</div>
		)
	}
}

export default News;

方式三(以function方式渲染) :

import React from 'react'

class News extends React.Component {
	constructor(props) {
        super(props); // 用于父子组件传值

        this.state = {
            info: [{
                    title:'第一个标题',
                    key:'第一个key'
                },{
                    title:'第二个标题',
                    key:'第二个key'
                },{
                    title:'第三个标题',
                    key:'第三个key'
                }]
        }
    }
    
	listItem_2 (list) {
        let res = list.map((item, key) => {
            return (
                <li key={key}>
                    <p>{item.title}</p>
                    <p>{item.key}</p>
                </li>
            )
        })
        return (
            <ul>{res}</ul>
        )
    }
    
	render () {
        return (
			<div className="news">
				{this.listItem_2(this.state.info)}
			</div>
		)
	}
}

export default News;

方式四(以组件方式渲染) :

这里的ListItem组件比较复杂的情况下建议单独抽离到一个js文件,写法完全一样,只是需要将组件通过export default 暴露出来

import React from 'react'

class ListItem extends React.Component {
    constructor(props){
        super(props); // props用于父子组件传值,如果没有值可以不
    }

    render () {
        let info = this.props;
        return (
            <div>
                <p>{info.info.title}</p>
                <p>{info.info.key}</p>
            </div>
        );
    }
}

class News extends React.Component {
	constructor(props) {
        super(props); // 用于父子组件传值

        this.state = {
            info: [{
                    title:'第一个标题',
                    key:'第一个key'
                },{
                    title:'第二个标题',
                    key:'第二个key'
                },{
                    title:'第三个标题',
                    key:'第三个key'
                }]
        }
    }
    
	render () {
        return (
			<div className="news">
				{
                    this.state.info.map((item, index) => {
                        return <ListItem key={index} info={item}/>
                    })
                }
			</div>
		)
	}
}

export default News;
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值