美文网首页
React初级

React初级

作者: AnnaJIAN | 来源:发表于2020-04-01 19:42 被阅读0次
    1. Fragment
      报错
    import React,{Component} from 'react'
    class Items extends Component{
        render(){
            return  (
                   <div><input /> <button> 增加服务 </button></div>
                   <ul>
                       <li>123</li>
                       <li>12344</li>
                   </ul> 
            )
        }
    }
    export default Items
    

    正确

    import React,{Component,Fragment } from 'react'
    
    class Items extends Component{
        render(){
            return  (
                <Fragment>
                   <div><input /> <button> 增加服务 </button></div>
                   <ul>
                       <li>123</li>
                       <li>1234</li>
                   </ul> 
                </Fragment>
            )
        }
    }
    export default Items 
    
    1. 不bind this,直接赋值无效
        inputChange(e) {
            //console.log(this);
            //this.state.inputValue = e.target.value;
            this.setState({
              inputValue : e.target.value
            })
            console.log(this.state.inputValue)
        }
    

    input 必须绑定this

    <input value={this.state.inputValue} onChange={this.inputChange.bind(this)}/>
    

    3,不能直接修改state
    正确

    //删除单项服务
    deleteItem(index){
        let list = this.state.list
        list.splice(index,1)
        this.setState({
            list:list
        })
    }
    

    错误

    //删除单项服务
    deleteItem(index){
        this.state.list.splice(index,1)
        this.setState({
            list:this.state.list
        }) 
    }
    
    1. 注释和className
    // 不能用class,不能用//注释
    {/*- this is correct -*/}
    <input className="input" value={this.state.inputValue} onChange={this.inputChange.bind(this)}/>
    

    5.父组件向子组件传值
    父组件插入子组件

    <ChildrenItem content={item} />
    

    子组件调用props.content 获取父组件的值

    import React, { Component } from 'react'; //imrc
    class Children  extends Component { //cc
    
        render() { 
            return ( 
                <div>{this.props.content}</div>
             );
        }
    }
    export default ChildrenItem;
    

    6.子组件向父组件传值
    父组件绑定父组件的方法传给子组件

    <div>
        <ChildrenItem
        key={index+item}
        content={item}
        deleteItem={this.deleteItem.bind(this)}
        />
    </div>
    

    子组件props调用父级方法,传入父组件获取的参数

    handleClick() {
        console.log(this.props.index)
        this.props.deleteItem(this.props.index)
    }
    render() { 
        return ( 
            <div onClick={this.handleClick}>
                {this.props.content}
            </div>
            );
    }
    

    7.react 单向数据流
    父组件传给子组件的数据流是单向的,不能在子组件中改变。
    只能通过父组件传递方法,子组件调用父组件的方法,然后再传值回来在父组件上改。

    8.react对参数的校验

    import PropTypes from 'prop-types'
    // 在class外面写类型限制
    ChildrenItem.PropTypes = {
        content:PropTypes.string,
        index:PropTypes.number,
        name:PropTypes.string.isRequired   
    }
    // 默认类型
    ChildrenItem.defaultProps = {
        name: '1234'
    }
    

    9.ref

    inputChange(e) {
        //console.log(this);
        //this.state.inputValue = e.target.value;
        this.setState({
            inputValue: this.input.value
        })
    }
    <input
        value={this.state.inputValue}
        onChange={this.inputChange.bind(this)}
        ref={(input)=>{this.input=input}}
    />
    //setState是一个异步函数,console.log会先执行,导致state里面的数计数错误
    addList() {
        this.setState({
            list: [...this.state.list, this.state.inputValue]
        },()=>{
            console.log(this.ul.querySelectorAll('div').length)
        })
    }
    

    相关文章

      网友评论

          本文标题:React初级

          本文链接:https://www.haomeiwen.com/subject/sagouhtx.html