Использование перечислений в реагировать - PullRequest
0 голосов
/ 27 марта 2020

Мне нужно отобразить enum значения на 1 переменную, а затем вызвать переменную и проверить, присутствует ли это перечисление или нет.

render() {
    const {
        id,
        name,
        features} = this.props;
}

Объектами будет переменная, которую необходимо отобразить в соответствии с поступающими перечислениями. Я бы получил что-то похожее из API:

{"id":"111", "name":"jack", "features":["MOUNTAIN", "HILL"]}

Так что будет всего 4 разных features: MOUNTAIN, HILL, LAKE, FISH. Тогда при необходимости я могу проверить:

if(features.mountain)
    //do stuff

1 Ответ

1 голос
/ 27 марта 2020

Если вы хотите проверить, включено ли указанное свойство из вашего перечисления (например, "ГОРЫ") в массив функций, возвращаемый из API, вы можете использовать метод Array.prototype.include () :

if(featuresArrayfromApi.includes('MOUNTAIN'){
   //do stuff
} 

Если вы хотите проверить, включают ли функции, возвращаемые из API, одно или несколько свойств в вашем перечислении функций, вы можете объединить includes с Array.prototype.some ( ) .

Например, в Typescript вы должны написать это так:

enum Features { MOUNTAIN, HILL, LAKE, FISH }

if(Object.keys(Features)
 .some(feature => featuresFromApi.includes(feature))){
   // do stuff
}

Редактировать

Клавиша features Данные API должны отображаться как любой другой ключ (id, name) - просто вместо того, чтобы держать 1 значение, он содержит массив. Затем вы можете использовать проверки, предложенные выше в предложении if. Например:

const data = [
    {"id":"111", "name":"jack", "features":["MOUNTAIN", "HILL"]},
    {"id":"222", "name":"john", "features":["FISH", "HILL", "LAKE"]}
    {"id":"333", "name":"joe", "features":["LAKE", "HILL", "FISH"]}

    ]

    data.map(record =>{

      console.log(record.id); 
      console.log(record.name);

      if (record.features.includes('MOUNTAIN'){
          // do stuff
        }          
    })

Также имейте в виду, что enum является символом Typescript, который недоступен в Javascript, поэтому, если вы не используете Typescript, вы можете просто объявить его следующим образом и это будет работать так же:

const Features =  { 
 MOUNTAIN: "MOUNTAIN",
 HILL: "HILL",
 LAKE, "LAKE",
 FISH: "FISH" 
}

...