You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Material UI v5 TextField的inputRef属性无法传递到输入组件怎么办?

Material UI v5 TextField 传递ref到原生输入DOM的正确方法

原因说明

你遇到的问题是因为v5版本重构了TextField的属性结构,v4中可用的顶层inputRef属性已经被移除,无法直接通过该属性绑定原生输入框的ref。

正确实现方式

方案1:通过inputProps传递ref

该方式可以直接把ref绑定到原生input元素上,是官方推荐的写法:

it('ref passed to input component', () => {
    let myref = React.createRef();
    // ref放在inputProps对象中传入
    const wrapper = enzyme.mount(<TextField inputProps={{ ref: myref }} />);
    chai.expect(myref.current).to.not.be.null;
});

方案2:通过顶层ref获取组件实例后取input属性

给TextField传顶层ref后,拿到的是TextField组件的实例,可通过实例的input属性获取原生输入DOM:

it('ref passed to input component via top ref', () => {
    let myref = React.createRef();
    const wrapper = enzyme.mount(<TextField ref={myref} />);
    // 从组件实例中取input属性
    chai.expect(myref.current.input).to.not.be.null;
});

注意事项

如果是直接使用未封装的Input/OutlinedInput/FilledInput组件,可以直接给组件传ref获取原生输入元素,不需要用上述写法。

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:36:10