javascript - 如何将 Prop 传递给延迟加载组件?

标签 javascript reactjs react-router

我正在尝试进行网站身份验证。我试图将 Prop 传递给延迟加载模块 但突然我遇到错误“Uncaught (in promise) TypeError: w is not a function”

我正在使用 react with apollo 客户端,react router 和 graphql 查询是完美的工作和惰性组件的渲染 但我不能将 Prop 传递给延迟加载组件

// App.js
const SignIn = lazy(() => import('pages/signin'));

function App(props) {
  // state to represent user signed in to the site
  let [auth, setAuth] = useState(false);

  function handleAuth (boolean) {
    setAuth(boolean);
  }

  return (
    <>
      <main>
        <Suspense fallback={<div>Loading...</div>}>
          <Switch>
            <Route exact path="/" component={HomePage} />
            <Route 
              path="/signin"
              auth={auth}
              handleAuth={handleAuth}
              render={props => (<SignIn {...props} /> )}
            />
// signin.js
let auth = props.auth;
let handleAuth = props.handleAuth;

return (
    <ApolloConsumer>
      {client => {
        return (
          <>
            <div className="signin-div">
              <h1>Sign in</h1>

              <form
                onSubmit={async e => {
                  e.preventDefault();
                  const { data } = await client.query({
                    query: SIGNIN_ACCOUNT,
                    variables: { email, password }
                  });
                  if (data.signin) {
                    handleAuth(true);
                  }
                }}
                className="signin-form"
              >

我预计 handleAuth(true) 会完美运行,但我错误地认为 handleAuth(true) 不是一个函数。下面是错误信息 “未捕获( promise )TypeError:w 不是函数”

我应该如何将 props 传递给延迟加载模块?

最佳答案

这里没有火箭科学只是将它的 Prop 直接传递给登录组件,你单独发送 Prop 的原因是因为这些 Prop 是从当时的路线收到的。

 return (
        <>
          <main>
            <Suspense fallback={<div>Loading...</div>}>
              <Switch>
                <Route exact path="/" component={HomePage} />
                <Route 
                  path="/signin"
                  auth={auth}

                  render={props => (<SignIn handleAuth={handleAuth} {...props} /> )}
                />

关于javascript - 如何将 Prop 传递给延迟加载组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56454157/

相关文章:

javascript - 使用 jQuery 动态更改 CSS 值

javascript - 使用javascript设置 Canvas 大小

javascript - react 路由器问题

javascript - 如何在没有参数的情况下获得 react 路由器原始网址?

reactjs - React-router 与查询字符串不匹配

javascript - 如何 "Endless Document"脚本(如 Skittles.com)

javascript - 在ajax中调用beforeSend成功

javascript - 重新编写,TypeScript : Cannot find module '@rescript/react/src/ReactDOM.gen' or its corresponding type declarations

javascript - 如何在没有 localStorage 的情况下保留 token 信息? react + 还原

css - 如何并排对齐 react 组件