this.»functionName» не является функцией

#javascript #reactjs #properties #jsx

#javascript #reactjs #свойства #jsx

Вопрос:

Я хотел бы использовать функцию в render(), которая будет вызываться несколько раз, потому что она вызывается для каждого элемента Map() . Но по некоторым причинам моя функция распознается неправильно, я получаю сообщение об ошибке :

это.IsHeStillAlive не является функцией

Я полностью переписал свой пост, чтобы его было легче понять, и вот ссылка на мой пример в песочнице: https://codesandbox.io/s/test-uz-713xy . в этом примере я пытаюсь использовать функции «IsHeStillAlive» и «SwitchButton».

спасибо за вашу помощь.

Ответ №1:

Вы можете попробовать использовать тернарный оператор следующим образом:

 <div className="slave">
    <h3>{panel.price}€</h3><br/>
    {
       panel.name === 'Basique' ?
          <Button className="buttonStore"
                  onClick={() => { this.UnsubcribeIt() }}>
              Unsubscribe
          </Button> :
          <Button className="buttonStore"
                  onClick={() => { this.buyit(licenceName) }}>
              Buy Now
          </Button>
    }
</div>
  

Или короче в первом <Button /> as onClick={this.UnsubcribeIt} .

Комментарии:

1. Да, я уже пробовал это на самом деле, но я хочу удалить «Базовый» с помощью «This. Функция TalkToBackend ()» и она не работает ни так, ни эдак … Я отредактирую свой код

2. @Xodarap Может быть, вы можете создать CodeSandbox для упрощения отладки и справки.

3. Я постараюсь сделать его, вероятно, будет легче понять, да

4. ну, я сделал образец песочницы, но по какой-то причине он еще не работает: codesandbox.io/s/upgradefile-5p5rd

5. Я создал новый пример в песочнице, и на этот раз он работает. вы можете найти ссылку в моем отредактированном сообщении.

Ответ №2:

Я думаю, вам следует dataGet сначала извлечь, чтобы это не сбивало с толку

 render(){
let {dataGet} = this.state
  return (
  {this.state.dataGet.map(mapPanel)}
  )
}
  

скажите мне, работает ли это

Комментарии:

1. Я только что попробовал, и я получаю какую-то ошибку, которую я не знаю, как исправить… «функция» выглядит как причина ошибок

2. это то, что я сделал. скажите мне, работает ли это ссылка

3. Я просто пытаюсь отредактировать свой код, как ваш пример, но получаю то же сообщение об ошибке

4. это то же самое, невозможно прочитать свойство ‘SwitchButton’ неопределенного

Ответ №3:

Кто-нибудь за пределами этого форума найдет мне решение.

Исправление находится в моей ссылке на песочницу, но если однажды линия будет отключена…

на всякий случай вот шаги, чтобы исправить мою проблему:

  1. переместите свои методы из класса, сделайте их компонентами функции в том же файле.
  2. измените параметр панели на props . Внутри реквизита будет реквизит панели
  3. визуализируйте компоненты, подобные

это будет не очень явно, если ссылка на песочницу мертва, но это, возможно, поможет.