React组件拆分与传值

组件拆分与组件之间的传值

父子组件的概念:

父组件通过属性的方式,向自组件传值

子组件通过this.props的属性,接收传递过来的值

 

父组件

src/TodoList.js

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

class TodoList extends Component {
    constructor(props) {
        super(props);
        this.state = {
            inputVal:'',list:[] 
        };

        this.changeVal=this.changeVal.bind(this);
        this.addItem=this.addItem.bind(this.deleteItem=this.deleteItem.bind();
    }

    changeVal(e){
        .setState({
            inputVal: e.target.value
        });
    }

    addItem(e){
        //按下回车键
        if(e.keyCode===13 && e.target.value!==""){
            const list=[....state.list,e.target.value]

            .setState({
                list:list
                对象的键值相同时,简写
                list,inputVal:''
            })
        }
        
    }

    deleteItem(index){
        const list=[....state.list];
        list.splice(index,1);从数组中删除指定index的数据
        .setState({
            list
        })
    }

    getList(){
        return this.state.list.map((item,index)=>{
            return (
                <TodoItem 
                    item={item}
                    key={index}
                    index={index}
                    deleteItem={.deleteItem}
                />
            )
        })
    }

    render(){
         这是JS中的注释
         (
            <Fragment>
                {/* 这是JSX中的注释 */}
                <label htmlFor="input">请输入内容:</label>
                <input type="text" 
                    id="input"
                    className="input"
                    value={.state.inputVal} 
                    onChange={.changeVal} 
                    onKeyUp={.addItem} 
                />
                <ul>{this.getList()}</ul>
            </Fragment> 
        );
    }
}

export default TodoList;

 

自组件 TodoItem.js

import React,{Component} from 'react';

class TodoItem extends Component{
    constructor(props){
        super(props);
        );
    }

    deleteItem(){
        调用父组件传递过来的方法
        this.props.deleteItem(this.props.index);
        解构赋值写法
        const {deleteItem,index}=.props;
        deleteItem(index);
    }

    render(){
        return <li key={this.props.index} onClick={this.deleteItem}>{this.props.item}</li>
    }
}

export default TodoItem;

 

效果图

 

相关文章

react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接...
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc ...