react

144 阅读2分钟

使用react要引入三个文件,且要按顺序引入

<script src="./react.development.js"></script>
  <script src="./react-dom.development.js"></script>
  <script src="./browser.min.js"></script>

  <script type="text/babel">

1.render方法有两个参数 第一个参数是要插入的内容,第二个参数是挂载的根元素(app),两个参数用,分隔开

2.必须有结束标签

<body>
    <div id="app">


    </div>
    <script src="./react.development.js"></script>
    <script src="./react-dom.development.js"></script>
    <script src="./browser.min.js"></script>
    <script type="text/babel">
    
        ReactDOM.render(
            <h1>hello</h1>,
            document.getElementById("app")
        )        
    </script>
</body>

组件的定义有两种方法:

1.class定义 父组件的传值,通过props参数接收,使用的时候this.props.xxx

       class Com1 extends React.Component{
            render(){
                return(
                    <div>
                        <h1>{this.props.title}</h1>
                        <p>{this.props.name}</p>
                        {this.props.children}
                    </div>
                )
            }
        }
        ReactDOM.render(
            <Com1 name="xiaoming" title="ye">
                <input type="text"/>
            </Com1>,
            document.getElementById("app")
        )        

2.函数定义 组件名称的首字母大写,props参数是一个obj,取到父组件的传值

     const Welcome = ()=>{
         return <h1>qwertyh</h1>
     }
     const Com= (props) =>{
         return(
             <div>
                <h1>{props.name}</h1>
                <p>{props.age}</p>
             </div>
         )
     }
        ReactDOM.render(
            <Com name="aaa" age="1112222333">asdfghjk</Com>,
            document.getElementById("app")
        )  

State:State是组件对象一个属性,用于改变组件的值

通常初始化: this.state.xxx=

修改时:this.setstate({

xxx=this.state.要修改的东西

})

state和props主要区别:

props是不可变的,是静态的。

state用于改变组件内容状态的值(动态的)

refs:组件内的标签都可以定义ref属性来标识自己

有两种方式:

1.这是官方推荐的方式

    <input type="text" ref={input=>this.myInput=input}/>
    <input type="text" onChange={this.change} ref="mpInput"/>

给组件绑定事件:

1.命名驼峰式

2.自定义的函数拿不到this指针,所以需要在构造函数内用bind改变指针。

  this.change=this.change.bind(this)

3.修改值应该用this.setstate({

xxx=this.state.要修改的东西

})

     class Com extends React.Component{
         constructor(params){
             super(params)
             this.state={
                 num:1,
                 name:"xiaoming"
             }
             this.add=this.add.bind(this)
         }
         add(){
             this.setState({
                 num:20
             })
             console.log(12345)
         }
         render(){
             return(
             <div>
                <h1>{this.state.num}</h1>
                <p>{this.state.name}</p>
                <button onClick={this.add.bind(this)}>click</button>
            </div>
             )
         }
     }

双向数据绑定:

        class Main extends React.Component{
        constructor(params){
            super(params)
            this.change=this.change.bind(this)
        }
        this.setState={
                    msg:""
        }
            change(event){
                this.setState(
                    {
                 msg:event.target.value
                    }
                )
                }
            }
            render(){
                return(
                    <div>
                        <input type="text" onChange={this.change} ref="mpInput"/>
                        <p>{this.state.msg}</p>
                    </div>
                )
            }
        }