Передайте setState из ловушки useState (), используя <Link> - PullRequest
2 голосов
/ 05 июня 2019

У меня проблема с реакции-маршрутизатором при попытке передать setState из useState ловушки с помощью <Link>. Что я делаю не так?

Я создал простой проект, чтобы показать проблему: https://codesandbox.io/s/restless-surf-mj2vx?fontsize=14

Откройте консоль и нажмите на ссылку, чтобы увидеть ошибку.

  const [state, setState] = useState(0);

  return (
    <div className="App">
      <Link to={{ pathname: "/test", state: { state, setState } }}>test</Link>
      <Switch>
        <Route path="/test" component={Test} />
      </Switch>
    </div>
  );
}

Я получаю эту ошибку, которая не помогает мне решить проблему:

"Uncaught DOMException: не удалось выполнить 'pushState' для 'History': function () {[native code]} не удалось клонировать."

1 Ответ

2 голосов
/ 05 июня 2019

Если вам нужна функция setState в компоненте <Test />, передайте ее вместе с маршрутом:

const [state, setState] = useState(0);

return (
    <div className="App">
        <Link to={{ pathname: '/test' }}>test</Link>
        <Switch>
            <Route
                path="/test"
                render={props => (
                    <Test {...props} state={state} setState={setState} />
                )}
            />
        </Switch>
    </div>
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...