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)}
  • 相关阅读:
    Nginx负载均衡和LVS负载均衡的比较分析
    Nginx和Squid配合搭建的Web服务器前端系统
    (总结)Linux服务器上最简单的Nginx反向代理配置
    Nginx主要模块常用指令说明
    (总结)Nginx 502 Bad Gateway错误触发条件与解决方法
    (总结)Linux下查看Nginx Apache MySQL的并发连接数和连接状态
    (总结)统计Apache或Nginx访问日志里的独立IP访问数量的Shell
    IoC模式(依赖、依赖倒置、依赖注入、控制反转)
    使用OAuth打造webapi认证服务供自己的客户端使用
    RESTful API 设计指南
  • 原文地址:https://www.cnblogs.com/Lolita-web/p/9875302.html
Copyright © 2011-2022 走看看