liqrizz
@liqrizz
лол

Как получить value у input типа hidden в React?

Мне понятно то, чтобы получить value у обычного input, нужно через событие onChange вызвать метод, который через event.target.value запишет его value в state.

Какое событие применить для input типа hidden чтобы вызвать метод? Ведь к нему не привязать onChange, так как он не редактируется
  • Вопрос задан
  • 585 просмотров
Пригласить эксперта
Ответы на вопрос 2
liqrizz
@liqrizz Автор вопроса
лол
Я не знаю как это делается по человеческий, но помогли рефы.
<input type="hidden" name="hidename" value="какое то значение" ref={(input) => { this.hiddenInput = input }} />

Таким образом в this.hiddenInput.value будет лежать "какое то значение"
Ответ написан
miraage
@miraage
Старый прогер
https://codesandbox.io/embed/jolly-bose-rvyzh

Только не бейте за такое))
import React from "react";
import ReactDOM from "react-dom";

import "./styles.css";

function App() {
  const [value, setValue] = React.useState("");
  const [hidden, setHidden] = React.useState("");
  const ref = React.useRef();

  function onInput(event) {
    setValue(event.target.value);
  }

  React.useEffect(() => {
    const observer = new MutationObserver(list => {
      for (const mutation of list) {
        if (mutation.attributeName === "value") {
          setHidden(ref.current.value);
        }
      }
    });

    observer.observe(ref.current, {
      attributes: true
    });

    return () => {
      observer.disconnect();
    };
  }, []);

  return (
    <div className="App">
      <div>Hidden: {hidden}</div>
      <input type="text" value={value} onInput={onInput} />
      <input type="hidden" value={value} ref={ref} />
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы