Подтверждение существования свойств вложенного объекта - PullRequest
0 голосов
/ 27 августа 2018

Мне часто приходится проверять вложенные свойства, и я вполне доволен тем, как я это делаю. Например, допустим, я хочу показать компонент, если в форме существует определенное свойство:

// check if the form exists
const hasForm = !!myForms[formId]

// check if the property exists on the form
const hasProp = hasForm && !!myForms[formId]['propertyName']

// do something
hasProp && <SomeComponent />

// of course, I could check it in one check, but I may need 'hasForm'
const hasProp = !!myForms[formId] && !!myForms[formId]['propertyName']

Мои вопросы: 1) Есть ли более лаконичный подход к этому? 2) Это безопасный подход или есть случай, когда этот метод может потерпеть неудачу?

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Я бы рекомендовал использовать условие проверки в одной строке.

Это будет ваш случай:

 (!!myForms[formId] && !!myForms[formId]['propertyName']) &&  <SomeComponent />

Он не проверит следующие все условия, если текущее условие вернет false. Если мы напишем условие в переменную, то оно будет сравниваться потом. Оба имеют незначительную разницу в производительности. Но это больше о читаемости кода, которая является нашей главной задачей.

0 голосов
/ 27 августа 2018

Вы можете использовать lodash get или имеет .

const hasProp = has(myForms, `${formId}.${propertyName}`)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...