2017-04-12 77 views
0

发现错误,请参阅下面ReactJS:如何使用的setState由我自己主动等维护项目

我的答案,但我将不胜感激,如果SMB解释我这个魔法与事件的处理是如何工作的。 如何更改活动函数知道哪个索引变量是?

我有一个语句列表,其中第一个语句默认处于活动状态。我想要点击切换活动。

下面变化Statements`组件状态activeIndex的代码点击语句的索引。但声明组件道具有效没有反应,因为我认为,它只是从每个声明中消失,所以在我的列表中没有活动项目。

那么我做错了什么?什么是最佳实践?

statements.coffee

@Statements = React.createClass 
    getInitialState: -> 
    statements: @props.data.statements 
    activeIndex: 0 
    changeActive: (index) -> 
    @setState activeIndex: index 
    console.log(index) 
    render: -> 
    React.DOM.div 
     className: 'row' 
     React.DOM.div 
     className: 'col-sm-9 statements' 
     for statement, index in @state.statements 
      React.createElement Statement, statement: statement, index: index, key: statement.id, active: (if @state.activeIndex == index then true), handleActiveStatement: @changeActive 

statement.coffee

@Statement = React.createClass 
    handleClick: -> 
    @props.handleActiveStatement(index: @props.index) 
    render: -> 
    React.DOM.div 
     className: 'statement ' + (if @props.active then 'active ' else null) 
     onClick: @handleClick 
     @props.index+1+'. ' 
     React.DOM.span null, 
     @props.statement.body 

回答

0

OK,我发现错了。可能会对smb有用。

错误是在这一行:

@props.handleActiveStatement(index: @props.index) 

它应该是:

@props.handleActiveStatement(@props.index) 

我将不胜感激,如果SMB解释我这个魔法与事件的处理是如何工作的。 如何更改活动函数知道哪个索引变量是?

相关问题