如何在React中为两个函数编写通用函数

时间:2018-11-21 08:31:17

标签: reactjs react-native react-redux react-router

我有一个类,其中有两个方法handleChange(e)cardClick(e),并且我想对两个函数的对象数组进行排序。 我的代码是:

handleChange(e){
arr.sort(compare);
            function compare(a, b){
                if(a.population === 'unknown')
                    return 1;
                if(b.population === 'unknown')
                    return -1;
                if(parseInt(a.population) < parseInt(b.population))
                    return 1;
                else if(parseInt(a.population) > parseInt(b.population))
                    return -1;
                else
                    return 0;
            }
}

cardClick(e){
arr.sort(compare);
            function compare(a, b){
                if(a.population === 'unknown')
                    return 1;
                if(b.population === 'unknown')
                    return -1;
                if(parseInt(a.population) < parseInt(b.population))
                    return 1;
                else if(parseInt(a.population) > parseInt(b.population))
                    return -1;
                else
                    return 0;
            }
}

我必须在handleChange和cardClick中都编写比较函数定义。他们有什么办法,这样我就不必写两次,并且我可以在两个函数中使用它。

1 个答案:

答案 0 :(得分:1)

您可以在类外部定义函数,并在两个事件处理程序中使用它。

示例

function compare(a, b) {
  if (a.population === "unknown") return 1;
  if (b.population === "unknown") return -1;
  if (parseInt(a.population) < parseInt(b.population)) return 1;
  else if (parseInt(a.population) > parseInt(b.population)) return -1;
  else return 0;
}

class App extends React.Component {
  handleChange = e => {
    arr.sort(compare);
    // ...
  };

  cardClick = e => {
    arr.sort(compare);
    // ...
  };

  render() {
    // ...
  }
}