zoukankan      html  css  js  c++  java
  • react 拆分组件于组件

    Todolist.js(这是父组件)

    import React, { Component,Fragment } from 'react';
    import './style.css';
    import TodoItem from './TodoItem';
    class Todolist extends Component {
        constructor(props) { //最优先执行的函数
            super(props);
            this.state={
                inputValue:'',
                list:[]
            }
        }
        render() {
            return ( 
                <Fragment>
                    <div>
                        {/*这是一个todolist*/}
                        <label htmlFor='insertArea'>输入内容</label>
                        <input 
                            id="insertArea"
                            className='input'
                            value={this.state.inputValue}
                            onChange={this.handleinputChange.bind(this)}
                        />
                        <button onClick={this.handlebuttonClick.bind(this)}> 提交 </button> 
                    </div> 
                    <ul>
                        {
                            // 这是一个list
                        }
                        {
                            this.state.list.map((item,index)=>{
                                return(
                                        <TodoItem //这是子组件
                                            key={index}
                                            index={ index } 
                                            item={ item } 
                                            deleteItem={this.handleItemdelt.bind(this)}
                                        />
                                    )
                            })
                        }
                    </ul> 
                </Fragment>
            );
        }
        handleinputChange(e){
            this.setState({
                inputValue:e.target.value
            })
        }
        handlebuttonClick(e){
            this.setState({
                list:[...this.state.list,this.state.inputValue],
                inputValue:''
            })
        }
        handleItemdelt(index){
            // immutable
            // state 不允许我们坐任何的改变
            const list=[...this.state.list];   // list的一个副本
            list.splice(index,1);
            this.setState({
                list:list
            })
        }
    }
    export default Todolist;

    TodoItem.js (子组件)

    import React ,{ Component } from 'react';
    class TodoItem extends Component{
        render(){
            return (<li 
            onClick={this.handleclick.bind(this)}
            dangerouslySetInnerHTML={{__html:this.props.item}}
        >
        </li>)
        }
        handleclick(){
            this.props.deleteItem(this.props.index);
        }
    }
    export default TodoItem;

    总结:

    1. 如何创建组件的拆分?

      一.首先创建一个TodoItem,然后按照react的组件写一个组件

    2.父子组件的关系

      Todolist是一个大的组件,TodoItem是里面小的组件,在react开发中,react是一个树形的结构

    3.父组件向子组件传递方式

      通过标签上的属性方式向子组件传递,它即可以传递数据,又可以传递方法

      index={ index }
      deleteItem={this.handleItemdelt.bind(this)}

    4.子组件怎么接收传递过来的方式?

      通过this.props.xxx的方式来接收,如:this.props.item

    5.有的时候子组件要调用父组件的方法,去改变父组件的数据,要怎么改变?

      直接通过this.props.方法调用,然后在父组件的this指向做一次绑定bind(this)

      子组件:this.props.deleteItem()
     父组件:deleteItem={this.handleItemdelt.bind(this)}
  • 相关阅读:
    【ybtoj】【kmp】公共子串
    【ybtoj】【Hash】最大分离度
    【哈希表模板(链前版本)】【ybtoj】【特殊序列】
    【ybtoj】【单调队列】出题方案
    【ybtoj】【单调队列】写博客
    【ybtoj】【线段树】魔法传输
    【ybtoj】【单调队列入门专题】
    OS:3-存储管理
    OS:2-处理器管理
    OS:1-操作系统概观
  • 原文地址:https://www.cnblogs.com/Lolita-web/p/9875302.html
Copyright © 2011-2022 走看看