2017-09-26 2 views
0

Puis-je faire ce qui suit?puis-je utiliser l'opérateur ternaire dans className de div?

<div className={`${customerDetails.isCustomer} ? u-pb--sm : u-ph--sm u-pb--sm`}> 

Sinon quelle est la meilleure façon d'écrire cela?

Merci

+1

Oui, vous pouvez. '

' – mersocarlin

+0

son ne fonctionne pas de cette façon :(quand isCustomer est vrai, il fait encore la partie else –

+1

S'il vous plaît inclure votre méthode de rendu entière, y compris la définition de 'customerDetails' –

Répondre

0

Cela devrait fonctionner. Vérifiez customerDetails et essayez de console.log.

const CustomerDetails = ({ customerDetails }) => 
 
    <div className={customerDetails.isCustomer ? 'customer': 'notCustomer'}> 
 
    {`Customer: ${customerDetails.isCustomer}`} 
 
    </div> 
 

 
class App extends React.Component { 
 
    render() { 
 
    const customerDetails1 = { isCustomer: true } 
 
    const customerDetails2 = { isCustomer: false } 
 
    
 
    return (
 
     <div> 
 
     <CustomerDetails customerDetails={customerDetails1} /> 
 
     <CustomerDetails customerDetails={customerDetails2} /> 
 
     </div> 
 
    ) 
 
    } 
 
} 
 

 
ReactDOM.render(
 
    <App />, 
 
    document.getElementById('root') 
 
)
.customer { 
 
    background-color: green; 
 
    color: white; 
 
} 
 

 
.notCustomer { 
 
    background-color: red; 
 
    color: white; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
 

 
<div id="root"></div>

0

Il fonctionne. Je l'utilise tout le temps. Comme d'autres l'ont demandé, à quoi ressemble votre fonction de rendu? La véritable façon d'appeler à nouveau la fonction de rendu (en intégrant les modifications dans votre DOM) utilise this.setState. Si vous utilisez un this.state.something comme booléen ternary, votre className sera mis à jour dynamiquement chaque fois que vous le modifiez en utilisant this.setState.