Строковые ссылки устарели, и Material-UI не поддерживает их использование. Я рекомендую прочитать: https://reactjs.org/docs/refs-and-the-dom.html
Также, чтобы получить ссылку на элемент <input />
, вы должны использовать опору inputRef
. Прочтите об этом здесь .
Если ваш React обновлен до настоящего времени, вы должны использовать createRef
хука useRef
. Ниже приведены некоторые примеры
// Using the useRef() hook. Only possible when you're using a function component.
const App = () => {
const textRef = useRef();
const showRefContent = () => {
console.log(textRef.current.value);
};
return (
<div className="App">
<TextField inputRef={textRef} />
<button onClick={showRefContent}>Click</button>
</div>
);
}
// Using createRef(). Use this when working in a React.Component
class App extends React.Component {
constructor(props) {
super(props);
this.textRef = createRef();
}
showRefContent = () => {
console.log(this.textRef.current.value);
};
render() {
return (
<div className="App">
<TextField inputRef={this.textRef} />
<button onClick={this.showRefContent}>Click</button>
</div>
);
}
}
Или, если ваш React не обновлен, вы можете сохранить его в локальной переменной, но это не самый предпочтительный способ.
class App extends React.Component {
showRefContent = () => {
console.log(this.textRef.value);
};
render() {
return (
<div className="App">
<TextField inputRef={element => (this.textRef = element)} />
<button onClick={this.showRefContent}>Click</button>
</div>
);
}
}
Кроме того, вы можете рассмотреть возможность использования состояния вместо того, чтобы создавать ссылки для всех полей и затем извлекать значения из домена.