JSX React HTML5 输入滑块不起作用 [英] JSX React HTML5 Input Slider Doesn't Work

查看:41
本文介绍了JSX React HTML5 输入滑块不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 React.JS 进行构建,并且正在构建一个具有两个组件选择的范围输入滑块.

I'm using React.JS for a build, and am building a range input slider with two choices for a component.

这是我的代码:

<input id="typeinp" type="range" min="0" max="5" value="3" step="1"/>

当我将它放入我的客户端渲染组件并尝试切换它时,它根本不会移动.在我正在进行的 JS/PHP 构建上对其进行测试,效果很好.

When I place it into my client side rendering component and try to toggle it it does not move at all. Testing it onto a JS/PHP build I have going on, it works fine.

为什么这在 JSX/React.JS 中不起作用,建议的解决方法是什么?

Why does this not work in JSX/React.JS and what would be a suggested work around?

谢谢!

推荐答案

用户交互无效,因为带有 value 属性的 被视为 控制.这意味着显示值完全由 render 函数控制.因此,要实际更新输入值,您应该使用 onChange 事件.示例:

User interactions have no effect because an <input> with value prop is considered as controlled. It means that displayed value is controlled entirely by render function. So to actually update input value you should use the onChange event. Example:

getInitialState: function() {
  return {value: 3};
},
handleChange: function(event) {
  this.setState({value: event.target.value});
},
render: function() {
  return (
    <input 
      id="typeinp" 
      type="range" 
      min="0" max="5" 
      value={this.state.value} 
      onChange={this.handleChange}
      step="1"/>
  );
}

您也可以使用 defaultValue 代替 value.在这种情况下, 被认为是不受控制的,任何用户交互都会立即由元素本身反映,而无需调用组件的 render 函数.

You can also use defaultValue instead of value. In this case <input> is considered as uncontrolled and any user interactions are immediately reflected by element itself without invoking render function of your component.

在官方文档

这篇关于JSX React HTML5 输入滑块不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆