在React Native中未定义函数

时间:2019-01-24 00:38:37

标签: javascript reactjs react-native

我在react native中创建了一个圆形进度条,错误是get is turnByStyle'未定义。

这是我在文章的帮助下设计的代码。这必须根据某些参数绘制进度圈。我正在使用ES6定义函数

SELECT data_date from
(select '2019-01-02 10:00:00' data_date union ALL
select '2019-01-28 10:00:00') d
where DATE_FORMAT(date(data_date),'%Y-%m-%d %r') BETWEEN DATE_FORMAT(date('2019-01-01 00:00:00'),'%Y-%m-%d %r') AND DATE_FORMAT(date('2019-01-07 00:00:00'),'%Y-%m-%d %r');

我希望带有进度条的圆形圆圈

3 个答案:

答案 0 :(得分:0)

解决方案

this.rotateByStyle

=>

rotateByStyle

为什么

rotateByStyle未包含在this中。

  

在方法中,这是指所有者对象。       单独地,这是指全局对象。       在函数中,这是指全局对象。       在函数中,在严格模式下,这是未定义的。       在事件中,这是指接收事件的元素。       诸如call()和apply()之类的方法可以将其引用到任何对象。

官方:JS This

答案 1 :(得分:0)

收到此错误,是因为您需要使用const, let or var关键字之一来初始化变量。

因此,根据您的情况,rotateByStyle = ...renderThirdLayer = ... 变量应使用上述任何关键字进行声明,例如:-{{1} },以便对其进行定义并起作用。

答案 2 :(得分:0)

我尝试了const,但没有用,所以我用let

let rotateByStyle = (percent, base_degrees, clockwise) => {
  let rotateBy = base_degrees;

  if(clockwise) {
    rotateBy = base_degrees + (percent * 3.6);
  } else {
    //anti clockwise progress
    rotateBy = base_degrees - (percent * 3.6);
  }

  return {
    transform:[{rotateZ: `${rotateBy}deg`}]
  };
}

let renderThirdLayer = (percent, commonStyles, ringColorStyle, ringBgColorStyle, clockwise, bgRingWidth, progressRingWidth, innerRingStyle, startDegrees) => {
  let rotation = 45 + startDegrees;
  let offsetLayerRotation = -135 + startDegrees;

  if(!clockwise) {
    rotation += 180;
    offsetLayerRotation += 180;
  }

  if(percent > 50) {
    return <View style=    {[styles.secondProgressLayer,this.rotateByStyle((percent - 50), rotation, clockwise),
    commonStyles, ringColorStyle, {borderWidth: progressRingWidth}    ]}></View>
  } else {
    return <View 
             style={[styles.offsetLayer, innerRingStyle, ringBgColorStyle, {transform:[{rotateZ: `${offsetLayerRotation}deg`}], borderWidth: bgRingWidth}]}>
           </View>
    }
}