本文主要讲述如何在 React 回调中回传参数。

方案一:使用 data-* 属性

这种方案仅仅适用于 HTML5 元素,不适用于经过封装的组件。

const Demo = () => {
    function handleClick(e) {
        console.log(e.target.dataset.text);  // 你点了我
    }

    return (
        <div
            data-text="你点了我"
            onClick={this.handleClick}
        >
            点我点我
        </div>
    )
};

export default Demo;

方案二:箭头函数

const Demo = () => {
    function handleClick(e, text) {
        console.log(text);  // 你点了我
    }

    return (
        <div onClick={(e) => handleClick(e, '你点了我')}>
            点我点我
        </div>
    )
};

export default Demo;

总结

使用方案一,在性能上优于方案二,因为方案二每次 render 都会重新生成一个新的 handleClick 函数并且进行绑定。

对于 HTML5 元素,推荐使用方案一。

但由于经过封装的组件无法获取其 dataset 值,所以只能使用方案二。