[英]Passing function parameter from App.js to Other component in React
I am trying to pass my snackbar component from App.js to other component using the function as follows:我正在尝试使用 function 将我的零食栏组件从 App.js 传递给其他组件,如下所示:
const [snackbarOpen, setSnackbarOpen] = React.useState(false);
const [snackbarMessage, setsnackbarMessage] = React.useState("");
const [snackbarSeverity, setSnackbarSeverity] = React.useState("");
const showSnackbar = (message, severity)=> {
setSnackbarOpen(true)
setsnackbarMessage(message)
setSnackbarSeverity(severity)
return false
}
<MuiThemeProvider theme={theme}>
<SnackBarAlert
open={snackbarOpen}
setOpen={setSnackbarOpen}
message={snackbarMessage}
severity={snackbarSeverity}
/>
<Router>
<Route exact path="/signup" component={Login} showSnackbar={showSnackbar}/>
</Router>
</Router>
</MuiThemeProvider>
Following is what i am trying to do in my Login component:以下是我在登录组件中尝试做的事情:
async function handleLogin (props) {
var apiBaseUrl = `${hostUrl}/user/v1/log-in`;
var data = {
emailId: email,
password: password,
};
var headers = {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
};
axios
.post(apiBaseUrl, data, { headers: headers })
.then((response) => {
//dispatch(sign_in);
if (response.status === 200) {
console.log("Logged in successfully");
props.showSnackbar("Logged In Successfully", "error");
let string = window.location.origin + "/Home";
window.open(string, "_self");
}
})
.catch((err) => {
console.log("######", err.response);
var errorCode = err.response.data.status.code;
var errorMessage = err.response.data.status.message;
console.log("Message data is", errorMessage);
if (errorCode === 1008) {
setresendEnabled(true);
props.showSnackbar(errorMessage , "error");
} else {
props.showSnackbar(errorMessage , "error" );
}
});
};
Follwing error is coming up while using it:使用时出现以下错误:
For passing props to a component inside a Route you can use the render
prop like this要将道具传递给 Route 内的组件,您可以像这样使用
render
道具
<Route
exact path="/signup"
render={() => (
<Login showSnackbar={showSnackbar} />
)}
/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.