2016-04-26 3 views
0

Этот компонент делает хорошо:Как использовать переменную/пропеллер в тройном оператора

const Footer =() => { 
    let dataDiv = <div>Data is: Some data</div>; 
    return (
    <div> 
     {data ? dataDiv : ''} 
    </div> 
) 
} 

Но если изменить текст «некоторые данные» с переменной, то HTML внутри dataDiv не отображается нормально, но, как чистый текст:

const Footer =() => { 
    let data = 'Some data'; 
    let dataDiv = <div>Data is: {data}</div>; 
    return (
    <div> 
     {data ? dataDiv : ''} 
    </div> 
) 
} 

у меня есть много различных свойств данных, которые я хочу, чтобы показать или скрыть в зависимости, если он присутствует или нет, как я могу решить эту проблему в React хорошим способом?

+0

0 Я только что проверил ваш код на 2º, и он работает нормально, какая версия Реагента вы используете? – QoP

+0

Я просто тестировал его, и все работает нормально. Я сделал скрипку для этого: https://jsfiddle.net/reactjs/69z2wepo/ – winhowes

+0

На самом деле, первый не работает hehe – Buzinas

ответ

1

Это действительный синтаксис и работает отлично, однако несколько вещей, чтобы помочь его очистить.

Во-первых, я рекомендовал бы, когда вы планируете использовать что-то, как логическое значение использовать Boolean()

Во-вторых, я бы рекомендовал вам вернуться null вместо пустой строки в методе визуализации.

В-третьих, поскольку вы используете синтаксис функции ES6, вы можете использовать шаблонные литералы для строк.

const Footer =() => { 
    let data = 'Some data'; 
    let dataDiv = <div>`Data is: ${data}`</div>; 
    return (
    <div> 
     {Boolean(data) ? dataDiv : null} 
    </div> 
) 
} 
+0

Спасибо за советы по очистке кода. Но каковы причины того, что вы предлагаете? Преимущество использования 'Boolean()'? Преимущество использования «null»? И почему использование строк шаблона ES6, когда «чистый JSX» короче? – EricC

+0

И еще одно: используется '&&' возможно лучше, чем использование тройной? 'Boolean (data) && dataDiv' – EricC

+0

Строки шаблонов могут препятствовать созданию более одного элемента span, который будет реагировать. Boolean является предпочтительной и лучшей практикой при проверке булевого типа. И нуль - это реакция предпочтительных по умолчанию –

Смежные вопросы