Реагируйте нативно, как получить массив имен свойств из переменной строки

#javascript #arrays #react-native

Вопрос:

Я пытаюсь получить определенный индекс массива с такой переменной :

 var test = 'category_' this.state.idCategorie // here = category_2
console.log(CategoriesCardsData[test]) // return undefined
console.log(CategoriesCardsData['category_2']) // works
 

Но если я попытаюсь получить его из моего теста с переменной, у меня будет неопределенное значение.

 class CategoriesList extends React.Component {

    constructor(props) {
        super(props)
        this.state = {
          CardsData: CategoriesCardsData, 
          newDataCards: [], 
          idCategorie: props.navigation.state.params.idCategorie
        }
    }
}

_test() {
  var test = 'category_' this.state.idCategorie
  console.log(CategoriesCardsData[test])
}

render() {
        return (
            <View style={styles.main_container}>
                {{this._test()}}
            </View>
        )
    }
 

И данные моих карточек :

         export default CategoriesCardsData = {'categorie_1': categorie_1(), 'categorie_2': categorie_2()}
    
    function categorie_1() {
      return [{
          ...
        }]
    }
    
    same for function categorie_2, but i cant post, dont know why have an error with stackoverflow...
 

Компонент, откуда осуществляется навигация, я отправляю свой идентификатор категории сюда

             <FlatList
              ...

                  return(
                    // i send my idcategorie here
                    <TouchableHighlight style={styles.categorie} onPress={() => this.props.navigation.navigate("Categories", {idCategorie:item.id})}>
                            <Text style={styles.CategoriesText}>{item.title}</Text>
                    </TouchableHighlight>

                  )
                }
              }

            />
 

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

1. Если ваш this.state.idCategorie номер на самом деле является номером, то это должно сработать. Опубликуйте минимально воспроизводимую демонстрационную версию, чтобы иметь возможность помочь.

2. я отредактировал свой пост с помощью своего кода для объяснения

3. Я вижу, что idCategorie состояние in зависит от состояния навигации. Возможно ли, что console.log это иногда работает, а иногда нет ? Также укажите код компонента, из которого вы переходите.

4. все в порядке, я отредактировал и добавил его. Для консоли я не знаю, у меня много времени на тестирование, и я не вижу проблемы. Но для моего теста var у меня тоже есть тест : тест var = ‘category_’ 2, который тоже не работает, поэтому я не думаю, что проблема в моем состоянии навигации

5. Понял. Ваш код кажется совершенно правильным. Однако подробностей недостаточно, чтобы ответить на этот вопрос. Использовать snack.expo.io чтобы создать воспроизводимую демонстрационную версию.