Javascript 如何使用react hook修复渲染的钩子,使钩子数量超过上一次渲染时的数量
index.tsx 我在添加Javascript 如何使用react hook修复渲染的钩子,使钩子数量超过上一次渲染时的数量,javascript,reactjs,typescript,react-hooks,Javascript,Reactjs,Typescript,React Hooks,index.tsx 我在添加react-i18next时遇到了问题,这是使用的翻译。与上一次渲染相比,错误消息渲染的钩子更多。当添加翻译时。我该怎么处理呢 这是完整的代码吗?错误消息通常表示您正在有条件地调用react钩子。您发布的代码不包含导致该钩子的部分。@trixn是的,当我尝试删除UseTransation()这是react-i18next时,没有错误。但是我需要使用usetransationuseffect/useAnyHook需要在函数中。我不使用Next.js,但我有一种感觉,它必
react-i18next
时遇到了问题,这是使用的翻译。与上一次渲染相比,错误消息渲染的钩子更多。当添加翻译时。我该怎么处理呢
这是完整的代码吗?错误消息通常表示您正在有条件地调用react钩子。您发布的代码不包含导致该钩子的部分。@trixn是的,当我尝试删除
UseTransation()
这是react-i18next
时,没有错误。但是我需要使用usetransationuseffect
/useAnyHook
需要在函数中。我不使用Next.js,但我有一种感觉,它必须自动将代码包装到一个函数中,该函数返回JSX,如果它没有导致返回错误的话,。因此,我建议将您得到的代码包装到另一个函数中,可以看到WAREuseEffect
等是按顺序运行的,以防next.js有某种挂载副作用。@trixn是的,正在试图弄清楚无效的js语法是如何工作的。OP现在添加了缺少的代码,因此现在更有意义了。
import useUser from '@services/users';
import React, { useState, useEffect } from 'react';
import { useTranslation } from 'react-i18next';
function App() {
const { t } = useTranslation();
const { getAll } = useUser();
const [ rowData, setRowData ] = useState([]);
useEffect(() => {
let ignore = false;
(async function setAllData() {
let response = await getAll({ length: 9999 });
})()
if (!ignore) {
setRowData(response['data']['data']);
}
})()
return () => {
ignore = true;
}
}, [])
return (
<>
<button>{t('create')}</button>
{
rowData.map((item, index) => (
<div key={index}>
{item.firstName}<br/>
</div>
))
}
</>
)
}
export default App;
export default function useUser() {
const creds = useCredentials();
Axios.defaults.baseURL = serverConfig[creds.server].api;
return {
getAll: (params?: object) => Axios.get(API_URL + (params ? getQueryParams(params) : ''))
}
}