Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用<;从useState()钩子传递setState;链接>;_Javascript_Reactjs_React Router - Fatal编程技术网

Javascript 使用<;从useState()钩子传递setState;链接>;

Javascript 使用<;从useState()钩子传递setState;链接>;,javascript,reactjs,react-router,Javascript,Reactjs,React Router,尝试使用从useState钩子传递setState时,react router出现问题。我做错了什么 我创建了一个简单的项目来说明问题: 打开console并单击链接以查看错误 const [state, setState] = useState(0); return ( <div className="App"> <Link to={{ pathname: "/test", state: { state, setState } }}>te

尝试使用
useState
钩子传递
setState
时,react router出现问题。我做错了什么

我创建了一个简单的项目来说明问题:

打开console并单击链接以查看错误

  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>
  );
}
const[state,setState]=useState(0);
返回(
测试
);
}
我收到的错误无法帮助我解决问题:

未捕获的DomeException:未能对“历史记录”执行“pushState”:无法克隆函数(){[本机代码]}


如果您需要
组件中的
setState
功能,请将其与路径一起传递:

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>
);
const[state,setState]=useState(0);
返回(
测试
(
)}
/>
);

它试图克隆您作为
状态
传递到
链接
的内容,但无法克隆
设置状态
功能。为什么要将其作为状态传递?当导航离开当前组件时,可能会重复要传递的点
setState
updater回调?谢谢您的回答。这是有道理的。在这种情况下,你会考虑使用上下文吗?我传递它的主要动机是更新保持在父组件状态的数组。由于链接导致表单向列表中添加了新元素。在这种情况下,上下文似乎允许以更好的方式管理它。如果通过
state
setState
几个层次的深度变得很难处理,请使用上下文,否则它可能不是正确的解决方案。我总是在开始时不使用上下文,除非我知道任何地方的所有组件都可能需要它(例如登录状态和语言设置)。