javascript - 如何将函数作为道具传递到路由 React js?
问题描述
我查看了许多其他堆栈溢出问题,这些问题看起来与我的问题相似,但都没有任何帮助。
所以这就是我想要做的。
在 App.js 中: 基本上我创建了一个我想在链接页面中使用的函数 singedInToggleHandler。
signedInToggleHandler = () => {
this.setState( (prev) => {
return {signedIn: !prev.signedIn};
});
};
<Route path = '/Login' component = {LoginScreen}
render = { (props) => (<LoginScreen SignedInToggleHandler = {this.signedInToggleHandler}/>)}/>
上面的最后一行是我传递函数的方式。
然后我在 LoginScreen.js 中访问它
formType = <SignIn SignedInHandler = {props.SignedInToggleHandler}/>
只是将它传递给另一个组件 SignIn.js
登录.js
function handleSubmit(event){
console.log("Submitted");
event.preventDefault();
console.log(email,password);
const user = SignIn(email,password);
console.log(user);
props.SignedInToggleHandler();
}
现在这是我访问它的最后一个地方。在这里,我想使用从 App.js获得的 SignedInToggleHandler() 但收到错误消息:
非常感谢您的时间和帮助!
解决方案
你的错误在这里
<Route path = '/Login' component = {LoginScreen}
render = { (props) => (<LoginScreen SignedInToggleHandler = {this.signedInToggleHandler}/>)}/>
您正在使用具有功能的component
道具。render
但根据文档,
警告:
<Route component>
优先于<Route render>
所以不要在同一个<Route>
.
要解决,请删除component
道具。render
道具会做它的工作。
<Route path = '/Login'
render = { (props) => (<LoginScreen SignedInToggleHandler = {this.signedInToggleHandler}/>)}/>
推荐阅读
- html - 有没有办法定位所有 Font Awesome 图标并将它们居中对齐?
- python - 如何在 Python 中查询嵌套的 mongoDB 数据?
- c# - 在 Visual Studio 19 和 Monogame/Xna 上开始调试需要很长时间
- java - 如何在 CLI 中从 /src 和 /WebContent 文件夹创建有效的战争文件?
- spring - 使用 Spring Security 和 Keycloak OpenID Connect 注销不起作用
- bash - 通过给定指令将项目迭代存储到相应的文件
- reactjs - React-Native Google-SignIn 注销不起作用
- excel - VBA减去两个日期
- c++ - 为什么我添加 MPI 时文件打不开?
- javascript - 我如何循环遍历数组和拆分值