Javascript 如果输入字符串有空格,则阻止状态更新
我下面的代码有什么问题?基本上,当用户在开始或结束时输入额外空间时,我不想更新我的状态Javascript 如果输入字符串有空格,则阻止状态更新,javascript,reactjs,Javascript,Reactjs,我下面的代码有什么问题?基本上,当用户在开始或结束时输入额外空间时,我不想更新我的状态 handleSearchQuery = (e) = { if(e.target.value.trim() != "") { this.setState({ q: e.target.value }); } } 第一个错误似乎是您忘记了arrow函数中的。将第一行更改为: handleSearchQuery = (e) => { 无论如何,我将这样编写整个函数: h
handleSearchQuery = (e) = {
if(e.target.value.trim() != "") {
this.setState({
q: e.target.value
});
}
}
第一个错误似乎是您忘记了arrow函数中的
。将第一行更改为:
handleSearchQuery = (e) => {
无论如何,我将这样编写整个函数:
handleSearchQuery = (e) => {
let str = e.target.value.trim();
if(str != this.state.q) {
this.setState({
q: str
});
}
}
这会将修剪后的输入与q
的现有状态进行比较。如果他们相等,什么也不会发生。否则,请更新状态
我将字符串的修剪结果存储在变量中,否则我需要
trim()
两次。。。不管它值多少钱。简单解决方案-handleSearchQueury=(e)=>this.setState({q:e.target.value.trim()})
@NirH,这将导致重新渲染,即使新的(修剪的)值等于旧的值。这不会,我建议读一点关于虚拟dom和协调的内容-哎哟,粗心的错误
handleSearchQuery = (e) => {
if(e.target.value.trim() != this.state.q) {
this.setState({
q: e.target.value
});
}
}