小工具知识网

当前位置: 首页 > 行业知识 > 【前端——bug】使用antd的Input组件无法通过ref修改value

行业知识

【前端——bug】使用antd的Input组件无法通过ref修改value

2026-11-14 08:51:17 来源:互联网转载

问题背景

我要制作个人博客的chatgpt聊天页面,为了样式统一,我index.php/tags-602.html" >使用了antd的input组件,并且添加了ref属性获取当前输入的内容。我的预期效果是

  • 向输入框输入完成后,按下enter,把输入框置空
    const message = ref.current.input.value.trim();ref.current.input.value = '';ref} className={styles.userInput} placeholder="Type a message..."  onPressEnter={sendMessage} /

    这里有一个坑就是,antd的input组件时封装html的,所以不能简单通过ref.current.value获取当前的内容,要再加一个input。

    思考

    - antd Input不要直接通过ref修改,因为当值发生改变时,必须在onChange中通过useState改变值,然后引发组件的重新渲染(可以使用ref来访问input元素,而改变ref的current属性的值时,不会导致重新渲染)

    https://github.com/ant-design/ant-design/issues/18030

    https://juejin.cn/post/7165804525431832612

    解决办法

    使用hooks来更新input的值

    const [inputValue, setInputValue] = React.useState('');const message = inputValue.trim();setInputValue('');sendMessage} value={inputValue} onChange={(e) = setInputValue(e.target.value)} />

上一篇:源码深度解析,高效S扫描器工作原理及实现揭秘

下一篇:如何下载并安装五笔输入法