返回值未定义,但在console.log

时间:2019-03-06 19:26:00

标签: javascript reactjs ecmascript-6

我正在尝试获取函数的返回值。

我正在这样做:

  let barHeight;
  componentDidMount() {
    barHeight = StatusBarManager.getHeight(statusBarHeight => statusBarHeight);

    console.log({ mounted: barHeight });
  }

  componentDidUpdate() {
    barHeight = StatusBarManager.getHeight(statusBarHeight => statusBarHeight);

    console.log({ update: barHeight });
  }

奇怪的是,如果我这样做:

StatusBarManager.getHeight(statusBarHeight => console.log(statusBarHeight));

我看到了它如何记录{height: 20},但是两个控制台日志都包含在这两种方法中:console.log({ update: barHeight });我所看到的只是undefined

那么我该如何获取StatusBarManager.getHeight返回的值以便在另一个函数中使用它?

2 个答案:

答案 0 :(得分:0)

console.log始终返回undefined。您可以使用以下代码

StatusBarManager.getHeight(statusBarHeight => console.log(statusBarHeight) || statusBarHeight);

答案 1 :(得分:0)

在{{1}中未定义barHeight的原因是,在console.log的值被{{1}的响应更新之前,正在执行console.log }。正如您已经注意到的,要使barHeight工作,必须将其移至StatusBarManager.getHeight()的{​​{1}}中。

console.log