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
几个层次的深度变得很难处理,请使用上下文,否则它可能不是正确的解决方案。我总是在开始时不使用上下文,除非我知道任何地方的所有组件都可能需要它(例如登录状态和语言设置)。