【问题标题】:Can this be an example for Higher Order Component in Javascript?这可以成为 Javascript 中高阶组件的示例吗?
【发布时间】:2021-07-10 11:04:13
【问题描述】:

这可以作为 JS 中高阶组件的示例

function f1(greet){
 console.log(greet);
}

let f2 = (f1) => { return 'shan' };

console.log(f2()); // 'shan'

【问题讨论】:

  • 您可以完全删除 f1 及其引用,并且代码仍然可以工作。所以它实际上并没有做任何事情。您所做的只是从函数返回一个字符串并记录它。
  • 你是指高阶函数还是组件?

标签: javascript


【解决方案1】:

不,高阶组件 (HOC) 是 React 中的一种技术/概念:https://reactjs.org/docs/higher-order-components.html 而您的代码 sn-p 甚至不包含 React。

高阶函数

您的示例看起来您想构建一个高阶函数:https://en.wikipedia.org/wiki/Higher-order_function,因为您似乎想将一个函数 (f1) 作为参数,但由于您甚至不使用它,@ 987654325@ 可以是任何东西,所以它不符合定义。

您可以通过在示例中进行此更改来使 f2 成为高阶函数:

function f1(greet){
 console.log(greet);
}

let f2 = (f) => { return f('shan') };

f2(f1);

现在f2 接受一个函数作为参数,符合定义。

维基百科页面给出了 JS 中一个高阶函数的 good example,它接受一个函数并返回一个函数:

const twice = f => x => f(f(x));
const plusThree = i => i + 3;
const g = twice(plusThree);
console.log(g(7)); // 13

【讨论】:

    【解决方案2】:

    HOC 是 React 中的一个概念,而组件将 props 转换为 UI,而高阶组件将组件转换为另一个组件。

    阅读this 回答了解更多信息和this React 文档的文章。

    【讨论】:

      猜你喜欢
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多