Более медленное обновление при отладке, чем при сборке релиза - PullRequest
0 голосов
/ 23 октября 2018

Хорошо, я создаю приложение, в котором есть функция, с помощью которой вы можете выбрать некоторые даты, отображаемые на круге, и когда вы дольше будете касаться этого круга и поворачивать его, они меняются.Я использую PanResponder для него и устанавливаю, когда мне нужно изменить выбранную дату.В течение некоторого времени это было медленным, но я обнаружил, что это был один из циклов в моем коде, который вызывал его, и я изменил его.Затем, когда я сделал сборку релиза, она стала такой же медленной, как и до изменений (я тестировал ее в режиме отладки с удаленной отладкой).Вы знаете, что может быть причиной этого?

РЕДАКТИРОВАТЬ: Это мой код:

panResponder = PanResponder.create({
onStartShouldSetPanResponder: evt => true,
onMoveShouldSetPanResponder: (evt, gestureState) => true,
onPanResponderGrant: evt => this.handleTouch(evt),
onPanResponderMove: (evt, gestureState) => this.handleTouch(evt)
});



getLineLength(initX, x, initY, y) {
    return Math.sqrt(Math.pow(x - initX, 2) + Math.pow(y - initY, 2));
  }

  getCos(a, b, c) {
    return (Math.pow(a, 2) + Math.pow(b, 2) - Math.pow(c, 2)) / (2 * a * b);
  }

//function for finding which day is selected
//periodDays = periodLength
  handleTouch(evt) {
    if (evt.nativeEvent.touches.length == 1) {

      if (this.middleOfCircle) {
        let x = evt.nativeEvent.pageX - this.middleOfCircle.x,
          y = -(evt.nativeEvent.pageY - this.middleOfCircle.y),
          topY = this.height,
          aLen = this.getLineLength(0, 0, 0, topY),
          bLen = this.getLineLength(0, x, 0, y),
          cLen = this.getLineLength(0, x, topY, y),
          angle =
            x >= 0
              ? (Math.acos(this.getCos(aLen, bLen, cLen)) * 180) / Math.PI
              : 360 - (Math.acos(this.getCos(aLen, bLen, cLen)) * 180) / Math.PI,
          chosenDay = ~~(angle / (360.0 / this.props.periodDays) + 0.5) + 1;
        if (chosenDay > this.props.periodDays) chosenDay = 1;
        if (this.props.cycleDay != chosenDay) this.props.changeSelectedDay(chosenDay);
      }
      this.counter = 0;
    }
  }

и в более высоком компоненте я передаю функцию для смены дня, как это:

changeSelectedDay={day =>
      this.setState(prevState => {
        if (prevState.selectedDay != day) return { selectedDay: day };
      })
    }

и я отрисовываю все это с помощью функции .map так:

//xyValues are a and y values of each view, calculated in componentDidMount
circleOfDates = this.state.xyValues.map((value, i) => (
    //view for every text

    <View
      style={{
        width: 25,
        position: "absolute",
        left: value[0] + CIRCLESIZE + 8,
        bottom: value[1] + CIRCLESIZE + 11,
        flexDirection: "column",
        justifyContent: "center",
        alignItems: "center"
      }}
      key={value[2]}>
      {this.getText(i, this.state.xyValues.length)}
    </View>
  ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...