在React组件中创建自定义函数

Ale*_*xey 43 javascript reactjs

我有一个React组件

export default class Archive extends React.Component { 
   ...
}
Run Code Online (Sandbox Code Playgroud)

componentDidMountonClick方法部分使用相同的代码,除了参数的微小变化.

是否可以在组件类中创建一个函数,以便可以在组件的范围内重用它?

mad*_*ox2 78

您可以在react组件中创建函数.它实际上是继承自的常规ES6类React.Component.请小心并将其绑定到onClick事件中的正确上下文:

export default class Archive extends React.Component { 

    saySomething(something) {
        console.log(something);
    }

    handleClick(e) {
        this.saySomething("element clicked");
    }

    componentDidMount() {
        this.saySomething("component did mount");
    }

    render() {
        return <button onClick={this.handleClick.bind(this)} value="Click me" />;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @RBT肯定会调用该函数。问题是方法中的“ this”将不是您期望的。在此处查看有关此内容的更多信息http://stackoverflow.com/questions/33973648/react-this-is-undefined-inside-a-component-function (2认同)
  • @FedericoCapaldo在构造函数中仅绑定一次函数 (2认同)

yiw*_*wen 19

其他方式:

export default class Archive extends React.Component { 

  saySomething = (something) => {
    console.log(something);
  }

  handleClick = (e) => {
    this.saySomething("element clicked");
  }

  componentDidMount() {
    this.saySomething("component did mount");
  }

  render() {
    return <button onClick={this.handleClick} value="Click me" />;
  }
}
Run Code Online (Sandbox Code Playgroud)

在这种格式中,您不需要使用 bind


han*_*man 7

你可以试试这个.

// Author: Hannad Rehman Sat Jun 03 2017 12:59:09 GMT+0530 (India Standard Time)

import React from 'react';
import RippleButton from '../../Components/RippleButton/rippleButton.jsx';

class HtmlComponents extends React.Component {

    constructor(props){
        super(props);
        this.rippleClickFunction=this.rippleClickFunction.bind(this);
    }

    rippleClickFunction(){
        //do stuff. 
        // foo==bar
    }

    render() {
      return (
         <article>
             <h1>React Components</h1>
             <RippleButton onClick={this.rippleClickFunction}/>
         </article>
      );
   }
}

export default HtmlComponents;
Run Code Online (Sandbox Code Playgroud)

你唯一关心的是你必须将上下文绑定到函数