2016-12-06 4 views
0

Не могли бы вы уточнить это выражение написанное в ReactСтиль конкатенации с помощью условных стилей

<View style={[styles.button, this.state.touching && styles.highlight]} /> 

Я знаю, что атрибут Style принимает массив объектов, какие чудеса меня это this.state.touching && styles.highlight часть. Может кто-нибудь просветить меня о том, как это работает? Большое спасибо!

+0

Да, это абсолютно верно, что конкретно возникает в вашем вопросе? – Cherniv

+0

Я хочу знать, как это работает && thingy. Согласно @Ori Drori, это называется «логическим концом»? – chlkdst

+0

Вы можете обратиться к [здесь] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_AND_()) для некоторых примеров. –

ответ

3

Это logical if с использованием И (&&). Если первое значение ложно, оно вернет это значение, если оно правдивое, оно вернет второе значение.

const state = { 
 
    touching: false 
 
}; 
 

 
const styles = { 
 
    highlight: 'highlightClass' 
 
}; 
 

 
console.log('state.touching is false: ', state.touching && styles.highlight); 
 

 
state.touching = true; 
 

 
console.log('state.touching is true: ',state.touching && styles.highlight);

Обратите внимание, что это не будет стиль false если это falsey, так как реагируют родные стили игнорировать falsy значения. Согласно docs:

поведение такое же, как и Object.assign: в случае конфликта ценностей, один из правого элемента будет иметь приоритет и falsy значения, как ложь, неопределенными и нуль воли игнорировать. Обычным шаблоном является условное добавление стиля, основанного на некоторых условиях.

+0

Есть ли ссылка, которую я могу прочитать, связанную с «логическим концом» и другими? – chlkdst

+0

На основе документации ReactNative указано, что значения фальши (false, null, undefined) игнорируются. Поэтому, я думаю, приведенный выше фрагмент действителен. – chlkdst

+0

Добавлена ​​ссылка на документы о значениях фальши и стилях. –