React JS TypeError:无法读取 areHookInputsEqual 处未定义的属性“长度”

Bha*_*wal 5 reactjs server-side-rendering react-dom react-dom-server react-hooks

我在使用“react-dom/server”中的renderToString在 SSR 上渲染某些 URL 时遇到一些错误

\n

我收到以下错误:

\n
TypeError: Cannot read property 'length' of undefined\nat areHookInputsEqual (C:\\projects\\spd-web-app1\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:992:38)\nat Object.useMemo (C:\\projects\\spd-web-app1\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:1230:13)\nat useMemo (C:\\projects\\spd-web-app1\\node_modules\\react\\cjs\\react.development.js:1521:21)\nat Provider (C:\\projects\\spd-web-app1\\node_modules\\react-redux\\lib\\components\\Provider.js:22:41)\nat finishHooks (C:\\projects\\spd-web-app1\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:1077:16)\nat processChild (C:\\projects\\spd-web-app1\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3046:14)\nat resolve (C:\\projects\\spd-web-app1\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:2962:5)\nat ReactDOMServerRenderer.render (C:\\projects\\spd-web-app1\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3437:22)\nat ReactDOMServerRenderer.read (C:\\projects\\spd-web-app1\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3375:29)\nat renderToString (C:\\projects\\spd-web-app1\\node_modules\\react-dom\\cjs\\react-dom-server.node.development.js:3990:27)\n
Run Code Online (Sandbox Code Playgroud)\n

我发现的是,在react-dom-server.node.development.js \xe2\x86\x92 createWorkInProgressHook()

\n

我得到下面的对象,其中memoizedState不是数组。

\n
{\n  memoizedState: 0,\n  queue: { last: null, dispatch: [Function: bound dispatchAction] },\n  next: {\n    memoizedState: { current: [QueryData] },\n    queue: null,\n    next: { memoizedState: [Object], queue: null, next: [Object] }\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

当在useMemo()中使用时, \n var prevDeps = prevState[1];\n将返回未定义,从而导致areHookInputsEqual()中出现问题

\n

我不确定可能出了什么问题,所以没有代码可以分享。

\n