【发布时间】:2019-08-21 21:06:43
【问题描述】:
在处理 React 组件时,我尝试设置特定范围的值来确定类型范围输入上的 step。
我能够使用普通 HTML 和 JS 重现所需的行为,即
HTML
<!-- custom step range -->
<div class="step">
<input id="input" type="range" min="0" value="0" max="4" step="1" list="tick-list">
<datalist id="tick-list">
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</datalist>
<span id="output"></span>
</div>
JS
var values = [10,25,50, 75, 100];
var input = document.getElementById('input'),
output = document.getElementById('output');
input.oninput = function(){
output.innerHTML = values[this.value];
};
input.oninput();
见代码笔here
但是,当尝试将相同的功能连接到 React 时,无法获得相同的结果。
即
class App extends Component {
constructor() {
super();
this.state = {
values : [10, 25, 50, 75, 100]
};
}
handleInputChange = () => {
const input = document.querySelector('input'),
const output = document.getElementById('output');
output = this.state.values;
};
render() {
return (
<div>
<input
oninput={this.handleInputChange()}
type="range"
min="0"
value="0"
max="4"
step="1"
list="tick-list" />
<datalist id="tick-list">
<option value="0" />
<option value="1" />
<option value="2" />
<option value="3" />
<option value="4" />
</datalist>
<span id="output">{this.state.values}</span>
</div>
);
}
}
render(<App />, document.getElementById('root'));
以上内容不允许我移动幻灯片,也不能一次输出一个步骤。
如何使用 React JS 正确连接它? Ps:随意提供一个示例作为功能组件而不是类。
【问题讨论】:
-
也许使用 onChange 而不是 onInput
-
我试过onChange no dice。我想知道如何从我发布到 React 的工作 vanilla JS ex 中重构。
-
设置输出为一个状态,使用该状态输出。
标签: javascript html reactjs ecmascript-6