使用<Link>从useState()挂钩传递setState

时间:2019-06-05 10:00:12

标签: javascript reactjs react-router

当尝试使用setStateuseState钩子传递<Link>时,react-router出现问题。我在做什么错了?

我创建了一个简单的项目来显示问题: dashboard.blade.php

打开控制台,然后单击链接以查看错误。

  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>
  );
}

我收到此错误,无法帮助我解决问题:

  

“未捕获的DOMException:无法在'History'上执行'pushState':无法克隆function(){[本机代码]}。“

1 个答案:

答案 0 :(得分:2)

如果您需要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>
);