Это нестандартный (но не такой уж и редкий) шаблон React, который не использует JSX, вместо этого помещает все в строку. Кроме того, это Coffeescript.
Реагировать на это можно с помощью собственного состояния компонента:
( c = console.log.bind console
)
mock_items: [
{
name: 'item_a'
uid: shortid()
}
{
name: 'item_b'
uid: shortid()
}
{
name: 'item_c'
uid: shortid()
}
]
getInitialState: ->
lighted_item: null
render: ->
div null,
ul null,
for item, idx in @mock_items
uid = item.uid
li
key: uid
onClick: do (idx, uid) =>
(e) =>
# justf to illustrate these are bound in closure by the do lambda,
c idx
c uid
@setState
lighted_item: uid
style:
cursor: 'pointer'
background: do (uid) =>
c @state.lighted_item
c 'and uid', uid
if @state.lighted_item is uid then 'magenta' else 'chartreuse'
# background: 'chartreuse'
item.name
Этот пример работает - я тестировал его локально. Вы можете посмотреть этот пример кода в моем гитхабе . Первоначально env был локальным только для моих собственных научно-исследовательских целей, но для этого я разместил его на Github. В какой-то момент он может быть переписан, но вы можете проверить фиксацию от 8 сентября 2016 года, чтобы убедиться в этом.
В более общем плане, если вы хотите увидеть, как работает этот шаблон CS / no-JSX для React, ознакомьтесь с некоторыми недавними работами здесь . Возможно, у меня будет время полностью реализовать POC для этой идеи приложения, стек для которого включает NodeJS, Primus, Redis и React.
event.currentTarget.style.backgroundColor = '#ccc';
если вы действительно не понимаете, что делаете (в большинстве случаев при интеграции сторонних виджетов).