美文网首页
React属性与事件

React属性与事件

作者: 寒岳旺旺 | 来源:发表于2020-02-26 12:09 被阅读0次

1、State属性

image.png
  • state属性属于自身属性
  • this.state用于初始化
  • 初始化可以放在构造函数里面
  • 修改state:this.setState({ username:"ddd",age:30 })
  • state的作用域只属于当前的类,不污染其他模块
import React from 'react'
import './index.less'

export default class DemoHeader extends React.Component{
    constructor(){
        super();//调用基类的所有初始化方法
        this.state = {
            username : "Parry",
            age : 20
        };
    }
    render(){
        setTimeout(
            () => {
                this.setState({ username:"ddd",age:30 })
            },4000
        );

        return (
            <header>
                <h1>这里是头部测试组件文件</h1>
                <p>{ this.state.username }  { this.state.age }</p>
            </header>
        )
    }
}

2、Props属性

  • Props属性属于外来属性
  • 传递参数:<DemoHeader userId = {12345} username={"nick"}/>
  • 模块中接收参数:
    <p>{ this.state.username } { this.state.age } {this.props.userId} {this.props.username}</p>
import React from 'react'
import DemoHeader from './components/DemoHeader'

export default class Test extends React.Component{
    render(){
        return (
            /*主程序代码中直接加载组件进行使用*/
            <DemoHeader userId = {12345} username={"nick"}/>
        );
    }
}
import React from 'react'
import './index.less'

export default class DemoHeader extends React.Component{
    constructor(){
        super();//调用基类的所有初始化方法
        this.state = {
            username : "Parry",
            age : 20
        };
    }
    render(){
        setTimeout(
            () => {
                this.setState({ username:"ddd",age:30 })
            },4000
        );

        return (
            <header>
                <h1>这里是头部测试组件文件</h1>
                <p>{ this.state.username }  { this.state.age } {this.props.userId} {this.props.username}</p>
            </header>
        )
    }
}

3、事件与数据的双向绑定

  • 事件绑定
import React from 'react'
import './index.less'

let names = ['changli','wangwang','hanyue']

export default class DemoHeader extends React.Component{
    constructor(){
        super();//调用基类的所有初始化方法
        this.state = {
            username : "Parry",
            age : 20
        };
    };

    changeUserInfo(){
        this.setState({age:50});
    }

    render(){
/*        setTimeout(
            () => {
                this.setState({ username:"ddd",age:30 })
            },4000);
*/
        return (
            <header>
                <h1>这里是头部测试组件文件</h1>
                <p>{ this.state.username }  { this.state.age } {this.props.userId} {this.props.username}</p>
                <input type="button"  value="提交" onClick={this.changeUserInfo.bind(this)}/>
                { /*names为列表,name为变量名,=> 箭头函数,临时函数*/ }
                { names.map((name,index) => <p key={index}>Hello,I am {name}</p>) }
            </header>
        )
    }
}

运行结果-点击提交前:


image.png

运行结果-点击提交后:


image.png
  • 子页面往父页面传参(在子页面中通过调用父页面传递过来的时间props进行组件间的参数传递)
    子页面-indexchild.js:
import React from 'react'

export default class IndexChild extends React.Component{

    render(){
        return(
            <div>
                <p>子页面输入:<input type="text" onChange={this.props.handleChildValueChange}/></p>
            </div>
        )
    }
}

父页面-index.js:

import React from 'react'
import IndexChild from './indexchild'
import './index.less'

let names = ['changli','wangwang','hanyue']

export default class DemoHeader extends React.Component{
    constructor(){
        super();//调用基类的所有初始化方法
        this.state = {
            username : "Parry",
            age : 20
        };
    };

    changeUserInfo(){
        this.setState({age:50});
    };

    handleChildValueChange(event){
        this.setState({
            age:event.target.value
        });
    };

    render(){
/*        setTimeout(
            () => {
                this.setState({ username:"ddd",age:30 })
            },4000);
*/
        return (
            <header>
                <h1>这里是头部测试组件文件</h1>
                <p>{ this.state.username }  { this.state.age } {this.props.userId} {this.props.username}</p>
                <input type="button"  value="提交" onClick={this.changeUserInfo.bind(this)}/>
                { /*names为列表,name为变量名,=> 箭头函数,临时函数*/ }
                { names.map((name,index) => <p key={index}>Hello,I am {name}</p>) }
                <IndexChild handleChildValueChange={this.handleChildValueChange.bind(this)}/>
            </header>
        )
    }
}

运行结果:


image.png

4、可复用组件

相关文章

  • React属性与事件

    1、State属性 state属性属于自身属性 this.state用于初始化 初始化可以放在构造函数里面 修改s...

  • 2018-11-07 react 事件处理

    react事件处理和dom事件处理是相似的。 react: Dom: 所以: React事件绑定属性的命名采用驼峰...

  • React学习 - 三.属性与事件

    state 属性(管理组件内部的属性状态) state 属性只作用于当前的组件内,不会污染到其他组件同时 stat...

  • React 中的事件处理(2)

    事件处理 React 元素采用类似 DOM0 标准中的事件属性定义方法 JSX 点击 直接创建 React 元素方...

  • react随笔5 事件处理

    事件处理 React元素的事件处理和DOM元素的事件处理很相似,但是有一点语法上的不同: React事件绑定属性的...

  • React之事件处理

    React 元素的事件处理和DOM元素的很相似,但是有一点语法上的不同: 事件处理 React 事件绑定属性的命名...

  • Handling Events(处理事件)

    所有的react元素都有基于dom事件的属性,例如按钮元素有一个onClick属性,还有双击事件、鼠标移入事件(o...

  • React事件处理

    事件处理 React 元素的事件处理和 DOM元素的很相似。但是有一点语法上的不同:1、React事件绑定属性的命...

  • React 属性于事件

    React.js入门基础与案例开发 by ParryKK in imooc.com 学习笔记 React stat...

  • 2018-10-23react事件系统

    1.合成事件的绑定方式 react事件的绑定方式在写法上与原生的html事件监听器属性很相似,并且含义和触发场景也...

网友评论

      本文标题:React属性与事件

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