2016-10-18 7 views

ответ

0

В Реагировании мы используем camelCase при указании желаемых имен стиля CSS.

In React, встроенные стили не указаны в виде строки. Вместо этого они указаны с объектом, ключом которого является версия camelCased из имя стиля https://facebook.github.io/react/tips/inline-styles.html

Вот демо, как можно условно применить стили в зависимости от значений сохраняется в состоянии: http://codepen.io/PiotrBerebecki/pen/xEyqER

class App extends React.Component { 
    constructor() { 
    super(); 
    this.state = { 
     msg: [ 
     {msg: {author: {name: 'Rich'}}}, 
     {msg: {author: {name: 'John'}}}, 
     {msg: {author: {name: 'Pete'}}} 
     ] 
    }; 
    } 

    render() { 

    const style1 = { 
     backgroundColor: 'red' 
    }; 

    const style2 = { 
     backgroundColor: 'blue' 
    }; 

    const style3 = { 
     backgroundColor: 'gray' 
    }; 

    const getStyleName = (name) => { 
     switch (name) { 
     case 'Rich': 
      return style1; 
     case 'John': 
      return style2; 
     default: 
      return style3; 
     } 
    }; 

    const renderNames = this.state.msg.map((item, index) => { 
     return (
     <p key={index} style={getStyleName(item.msg.author.name)}> 
      {item.msg.author.name} 
     </p> 
    ); 
    }) 

    return (
     <div> 
     <h1>React</h1> 
     {renderNames} 
     </div> 
    ); 
    } 
} 

ReactDOM.render(
    <App />, 
    document.getElementById('app') 
); 
+0

хорошо, хорошо выглядит. последнее, что нужно уточнить, если я хотел просто применить эти стили к определенному классу, как я могу это сделать? в настоящее время ваш делает фон всей страницы! –

+0

Я обновил код и ответ. Я обновлю его через пару минут. –

+0

oh, а также, возможно, вы заметили, что у меня есть hardcoded '[0]', но мне бы хотелось [i] 'и повторить массив. как это можно достичь? Я попытался включить цикл for, но мне не нравится это внутри стилей const, и если я ставил стили const внутри цикла for, он не распознает его позже ... –