данные не передаются внутри функции - PullRequest
0 голосов
/ 14 февраля 2020

Я создал функцию, которая передает несколько данных из JSON с использованием for-each, а затем вызвал это внутри render, но не получаю никакого ответа внутри этой области видимости, есть идеи, почему это так?

моя функция выглядит следующим образом:

 color=(data)=>{
       this.state.data.colors.forEach(function(color){
        console.log(color)
        return(
          <View>
<TouchableOpacity>
            <Button value= {color.color} />
</TouchableOpacity>
          </View>
        )
       })
      }

И я вызывал ее внутри своей функции рендеринга следующим образом:

<View>
{this.color()}
<View>

В моих журналах этот this.state.data.colors отображается как неопределенный внутри scope, кто-нибудь может подсказать, что я делаю не так?

Любая помощь будет полезна, скажите, если вам что-то понадобится.

1 Ответ

0 голосов
/ 14 февраля 2020

Чтобы получить лучшую помощь, обновите ваш вопрос с помощью массива colors. Хотя вы можете попробовать это.

1) Ваша функция this.color() ожидает аргумент data. Но когда он вызывался в компоненте Views, аргумент не передавался.

Удалить data из аргумента, переданного в this.color(). Я вижу, вы не используете его в своей функции.

2) Убедитесь, что ваше состояние структурировано так data.colors. Значение colors - это массив внутри узла data. Я подозреваю, что colors сам является родительским узлом, а не data. Следовательно, правильный способ получения значений состояния будет this.state.colors, а не this.state.data.colors

3) Убедитесь, что color является ключом в массиве colors.

т.е.

 colors:[{color: #00FFDE}, {color: #00FFDE}]

В соответствии с вашей функцией, вы правы! color.color правильно

Но если это так

colors:[{name: #00FFDE}, {name: #00FFDE}]

В соответствии с вашей функцией, правильная вещь будет color.name

Надеюсь, это поможет!.

...