将状态设置为空字符串不会触发重新渲染吗?

时间:2018-03-29 21:59:27

标签: javascript string reactjs ecmascript-6

我正在桌面上进行实时搜索栏功能。我使用输入字段并将onCeyUp绑定到handleChange函数,该函数使用输入字段中的值设置状态:搜索值。这将传播到我的表并触发搜索。它对任意数量的字符都可以正常工作,甚至在删除字符串时也只有一个字符。

handleChange (e) {
    this.setState({searchVal: e.target.value});
}

当我删除输入字段中的所有字符并且e.target.value给我""时,什么不起作用。当它使用空字符串设置状态时,它根本不会触发重新渲染,因此我的搜索功能不会发生。我不明白为什么?如果我将searchVal硬编码为null或未定义,则情况相同。

编辑:发现它确实会触发重新渲染,因为componentWillReceiveProps和componentWillUpdate确实发生了,但componentDidUpdate没有,这就是我处理搜索值的地方。

编辑:原来它重新渲染,我正在检查是否真空,这将排除空字符串。我的坏。

1 个答案:

答案 0 :(得分:0)

好吧,这里描述的问题发生在我身上。如果返回“”,状态将被更新,但页面不会重新呈现。我采取了一种解决方法:

            if (result.file.length !== 0){
                this.setState({text: result.file})
            } else {
                this.setState({text: " "})
            }

有效。