简体   繁体   English

将 function 参数从 App.js 传递给 React 中的其他组件

[英]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:使用时出现以下错误:

enter image description here在此处输入图像描述

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM