点击事件示例

注意,onClick中的方法名不需要加(),否则就自动执行该方法了

import React from 'react';
import ReactDOM from 'react-dom';

let obj = {
    name: "Lee",
    age: "24"
}

class Me extends React.Component
{
    showMe() {
        window.alert(123)
    }
    render()
    {
        return <div>
            <h2>{this.props.name}:{this.props.age}</h2>
            <input type="button" value="点我" onClick={this.showMe} />
        </div>
    }
}

ReactDOM.render(
    <Me { ...obj } />,
    document.getElementById('root')
);


也可以在标签中直接书写function、Es2015的箭头函数

import React from 'react';
import ReactDOM from 'react-dom';

let obj = {
    name: "Lee",
    age: "24"
}

class Me extends React.Component
{
    showMe() {
        window.alert(123)
    }
    render()
    {
        return <div>
            <h2>{this.props.name}:{this.props.age}</h2>
            <input type="button" value="点我" onClick={() => {
                alert(this.props.name)
            }} />
        </div>
    }
}

ReactDOM.render(
    <Me { ...obj } />,
    document.getElementById('root')
);

注意,由于箭头函数没有this,会往父辈寻找object对象作为this。

本demo将class Me 作为了 this,所以才能正常找到this.props.name。

如果是正常的function,this指向的是函数本身。是找不到this.props.name的。解决方法是使用function.prototype.bind(obj)

import React from 'react';
import ReactDOM from 'react-dom';

let obj = {
    name: "Lee",
    age: "24"
}

class Me extends React.Component
{
    showMe() {
        window.alert(123)
    }
    render()
    {
        return <div>
            <h2>{this.props.name}:{this.props.age}</h2>
            <input type="button" value="点我" onClick={function () {
                alert(this.props.name)
            }.bind(this)} />
        </div>
    }
}

ReactDOM.render(
    <Me { ...obj } />,
    document.getElementById('root')
);

results matching ""

    No results matching ""