2015-11-03 137 views
0

我们正在研究一个项目,我们正在使用框,并且需要其中一个选择框来执行操作,当用户从列表中选择一个项目时。这是我们第一次接触React,更不用说建立一个项目了,所以我们在这一点上很难受。我们正在使用的的onChange代码如下:onChange无法在React中渲染

var React = require('react'); 
    var ReactPropTypes = React.PropTypes; 

    var ProgramSelectorComponent = React.createClass({ 

     propTypes: { 
      allPrograms: ReactPropTypes.array.isRequired 
      }, 

     _updateProgram: function(e) { 
      this.setState({ 
       value: "TEST" 
      }); 

     }, 
     render() { 
      var Programs = this.props.allPrograms; 
      var options = Programs.map(function (prog) { 
       return <option key={ prog.program_id } value={ prog.program_id } > 
        { prog.program_name } 
       </option>; 

      }); 


      return (
       <select className="form-control margin-bottom" name="Program" id="programSelect" ref="progRef" onChange={this._updateProgram} > 
        <option value="select">Select</option> 
        {options} 
       </select> 
      ) 
     } 


    }); 

    module.exports = ProgramSelectorComponent; 

我知道,呈现会在<select>标签工作,因为我可以像data-test-id="test"添加的东西,呈现正常,但由于某些原因,该的onChange不在代码中显示,因此不起作用。

就像我说的,我们都是新来的,所以任何帮助将不胜感激。

+0

的'onChange'支撑将*不*显示在生成的HTML。从React到HTML没有1:1映射。在'_updateProgram'方法中添加'debugger'语句或'console.log(...)'调用时,它会被调用吗? –

回答

0

在您选择标签的尝试:<select value={this.state.value}>

这是一个良好的阅读关于控制VS不受控制的组件:https://facebook.github.io/react/docs/forms.html

+0

是的,我们已经遍布Facebook的github以及其他多个示例网站。我们无法获取onChange进行渲染。我将传递选择标签修改。 –

+1

你确定onChange没有被调用吗?它似乎被调用,组件的状态被改变,这将触发重新渲染。但是,您当前的渲染函数并未使用组件的状态,因此没有视觉变化来查看状态何时更改。 – jjow