react组件之间的传值

分享一个很可爱的图hhh~
在这里插入图片描述
react具有单向数据流的特点,子组件只能使用父组件所传的值但不能修改。
父组件通过属性向子组件传值,子组件通过方法反过来去调用父组件的数据,最终相当于是父组件自己修改的数据

例:实现一个TodoList的删除item功能

父组件TodoList.js

import React,{Component, Fragment} from 'react';
import TodoItem from './TodoItem';

class TodoList extends Component{

    constructor(props){
        super(props);
        this.state={
            list:['React','JavaScript']
        }
        this.removeData=this.removeData.bind(this);
    }

    render(){
        return (
            <Fragment>
                <div>
                    <input value={this.state.inputValue}/>
                    <button>提交</button>
                </div>
                <ul>
                    {this.getTodoItem()}
                </ul>
            </Fragment>
        );
    }

    getTodoItem(){
        return (
            this.state.list.map((item,index)=>{
                return (
                    <TodoItem
                        content={item}
                        index={index}
                        key={index}
                        removeItem={this.removeData}
                    />
            );
        }))
    }

    removeData(index){
        this.setState((prevState)=>{
            const list=[...prevState.list];
            list.splice(index,1);
            return {list}
        });
    }
}

export default TodoList;

子组件TodoItem.js

import React,{Component} from 'react';

class TodoItem extends Component{
    constructor(props){
        super(props);
        this.handle=this.handle.bind(this);
    }

    render(){
        const {content}=this.props;
        return (<li
                    onClick={this.handle}
                >{content}</li>);
    }

    handle(){
        const {removeItem,index}=this.props;
        removeItem(index);
    }
}

export default TodoItem;

要注意this指向,此处的this.removeData是在constructor中设置后的哟~
在这里插入图片描述
在这里插入图片描述

效果如下(点击li标签便可删除)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值