李恒道 发表于 2023-12-3 20:58:03

Remix框架React has detected a change问题

这种情况是在使用了useContext等函数,下次提前返回导致hook的链条出现错误
首先排查各函数是否存在提前return等问题
然后排查是否存在框架与实现影响
在本次最后定位到了meta函数的t导致
```js
export const meta: V2_MetaFunction = ({ data }) => {
const {t}=useTransition()
return [{ title: t('ScriptCat') }];
};
```
其中const {t}=useTransition()调用了useTransition
而useTransition调用了useContext
由于其框架会循环遍历meta
一旦路由发生改变就会导致hook链的不正确
解决方案就是在loader调用
```js
const t = await i18next.getFixedT(request);
```
然后返回给meta函数进行直接使用
页: [1]
查看完整版本: Remix框架React has detected a change问题