react组件传值

1、传输固定数据

在List组件中写一个Cartoon组件,接收一个对象{ name, animation },再List组件中调用Cartoon组件,并传入两个值name,animation

// import React from 'react'

// eslint-disable-next-line react/prop-types
function Cartoon({ name, animation }) {
    return (
        <div className="cartoon">
            <h2>{name} --- {animation}</h2>
        </div>
    )
}

function List() {
    return (
        <div className="list">
            <Cartoon name='喜羊羊' animation='洋洋与狼' />
        </div>
    )
}

export default List

注意:如果Cartoon方法的name和animation报错:'name' is missing in props validation eslint(react/prop-types)

在Cartoon方法的上面添加 // eslint-disable-next-line react/prop-types

2、使用循环数组传值

在List中定义一个数组,以循环的形式像Cartoon组件传值,完整代码如下
 

// import React from 'react'

// eslint-disable-next-line react/prop-types
function Cartoon({ name, animation, joy, a }) {
    const clickHandle = () => {
        a(name, joy);
    }

    return (
        <div className="cartoon">
            <h2>{name} --- {animation}</h2>
            <button onClick={clickHandle}>按钮</button>
        </div>
    )
}

function List() {
    const cartoon = [
        {
            id: 1,
            name: '懒洋洋',
            animation: '羊羊与狼',
            joy: '睡觉'
        }, {
            id: 2,
            name: '灰太狼',
            animation: '羊羊与狼',
            joy: '平底锅'
        }, {
            id: 3,
            name: 'Tom',
            animation: 'Tom and Jerry',
            joy: 'Jerry'
        }

    ]
    const like = (name, joy) => {
        console.log(`${name}喜欢${joy}`);
    }

    return (
        <div className="list">
            {cartoon.map((item) => (
                <Cartoon key={item.id} {...item} a={like} />
            ))}

        </div>
    )
}

export default List

效果如下图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值