React 事件方法

一、位置

constructor(props){}render(){}同级

import React, {Component} from 'react'
import '../assets/css/index.css'

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            msg: '我是一个Test组件'
        }
    }

    sayHello() {
        alert('Hello World!')
    }

    render() {
        return (
            

{this.state.msg}

) } }
React 事件方法_第1张图片
页面

React 事件方法_第2张图片
点击按钮后弹出

二、获取state里的值

通过改变this的指向,有三种方法:

import React, {Component} from 'react'
import '../assets/css/index.css'

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            msg: '我是一个Test组件',
            msg1: '我是一个Test组件1',
            msg2: '我是一个Test组件2',
            msg3: '我是一个Test组件3',
        }
        // 第二种方法
        this.getStateMSG2 = this.getStateMSG2.bind(this)
    }
    // 第一种方法
    getStateMSG1() {
        alert(this.state.msg1)
    }
    // 第二种方法
    getStateMSG2() {
        alert(this.state.msg2)
    }
    // 第三种方法,最常用!
    getStateMSG3 = () => {
        alert(this.state.msg3)
    }
    render() {
        return (
            

{this.state.msg}

{/*第一种,调用时候绑定this*/}
{/*第二种,构造函数里指定this*/}
{/*第三种,箭头函数实现*/}
) } }
React 事件方法_第3张图片
页面

React 事件方法_第4张图片
点击了获取msg1按钮后弹出

React 事件方法_第5张图片
点击了获取msg2按钮后弹出

React 事件方法_第6张图片
点击了获取msg3按钮后弹出

三、修改state里的值

通过调用this.setState方法,参数为对象,里面是要修改的state里的键值对。
因为要用到this,所以要特别注意this的指向,参考获取state里的三种改变this指向的方法。

import React, {Component} from 'react'
import '../assets/css/index.css'

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            msg: '我是一个Test组件'
        }
    }

    setStateMSG = () => {
        this.setState({
            msg: '这是改变后的值'
        })
    }
    render() {
        return (
            

{this.state.msg}

) } }
React 事件方法_第7张图片
原来的页面

React 事件方法_第8张图片
点击改变msg按钮后,内容变了

四、执行方法传参

不可以在调用时候,直接传,会立即调用而且会报错,应改为使用bind方法传参。

import React, {Component} from 'react'
import '../assets/css/index.css'

export default class Test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            msg: '我是一个Test组件'
        }
    }

    setStateMSG = str => {
        this.setState({
            msg: str
        })
    }
    render() {
        return (
            

{this.state.msg}

) } }
React 事件方法_第9张图片
原页面

React 事件方法_第10张图片
点击改变msg按钮后

你可能感兴趣的:(React 事件方法)