当前位置: 首页 > 面试题库 >

使用React JS进行下拉的OnChange事件

邵繁
2023-03-14
问题内容
var MySelect = React.createClass({
     change: function(){
         return document.querySelector('#lang').value;
     },
     render: function(){
        return(
           <div>
               <select id="lang">
                  <option value="select" onChange={this.change}>Select</option>
                  <option value="Java" onChange={this.change}>Java</option>
                  <option value="C++" onChange={this.change}>C++</option>
               </select>
               <p></p>
               <p value={this.change}></p>
           </div>
        );
     }
});

React.render(<MySelect />, document.body);

onChange事件不起作用。


问题答案:

更改事件是在<select>元素而不是<option>元素上触发的。但是,这不是唯一的问题。您定义change函数的方式不会导致组件的重新渲染。似乎您可能尚未完全了解React的概念,所以“在React中思考”可能会有所帮助。

您必须将所选值存储为状态,并在值更改时更新状态。更新状态将触发组件的重新呈现。

var MySelect = React.createClass({
     getInitialState: function() {
         return {
             value: 'select'
         }
     },
     change: function(event){
         this.setState({value: event.target.value});
     },
     render: function(){
        return(
           <div>
               <select id="lang" onChange={this.change} value={this.state.value}>
                  <option value="select">Select</option>
                  <option value="Java">Java</option>
                  <option value="C++">C++</option>
               </select>
               <p></p>
               <p>{this.state.value}</p>
           </div>
        );
     }
});

React.render(<MySelect />, document.body);

另请注意,<p>元素没有value属性。反应/
JSX简单地复制了著名的HTML语法,它不引入自定义属性(有例外keyref)。如果希望所选值成为<p>元素的内容,则只需将其放入其中,就像处理任何静态内容一样。

了解有关事件处理,状态和表单控件的更多信息:

  • http://facebook.github.io/react/docs/interactivity-and-dynamic-uis.html
  • http://facebook.github.io/react/docs/forms.html


 类似资料:
  • 我的表单中有一个下拉列表,用于过滤数据。我使用ajaxonchange函数根据所选列表过滤数据。 我的下拉列表如下所示: 这是我想要显示onchange数据的div: 当有onchange on下拉列表时,它将通过以下ajax功能: 然后转到url检查是否有来自ajax的帖子: 因此,过滤完成后,

  • 问题内容: 我的MVC视图中的代码为黑色,如下所示: 我想设置ViewData [“ selected”]的值,以便可以将其发送到所需的操作。有人可以建议我该怎么做吗? 谢谢! 问题答案: 为什么不使用表单,而不在下拉菜单中使用jQuery onChange事件?

  • 问题内容: 如何监听基于控件的更改事件? http://jsfiddle.net/NV/kb3gN/1621/ 问题答案: 编辑: 请参阅SebastienLorber的答案,该答案修复了我的实现中的错误。 编辑06/2016:我刚刚遇到了一个新问题,当浏览器尝试“重新格式化”刚刚给他的html时,会导致组件始终重新呈现,这会出现一个新问题。看到 编辑07/2016:这是我的生产实现。它有一些您可

  • 问题内容: 我有一个下拉列表,需要根据一条语句动态加载表单元素 情况1加载一些表单元素(输入等) 情况2清除这些元素… 谢谢 问题答案: 试试这个:

  • 问题内容: 我正在使用材料ui表。列之一具有SelectField组件,这是一个下拉菜单,其中没有几个项目可供选择。示例代码在这里: 根据提供给表的数据中的clientId值,正确设置所有行的下拉菜单的初始值。在更改所选行的下拉菜单时,我想更改提供的数据的clientId属性。我该如何实现?React是关于状态的。但是,如何管理多个动态状态? 这就是SelectField onChange的内容: