我正在为我的应用程序设置语言,但我遇到了一个问题。
我使用 React.useContext()
来设置语言。但当我在 saga 的提示中修复它时,它会记录以下错误:
[错误:无效的钩子调用。钩子只能在函数组件的主体内调用。这可能是由于以下原因之一引起的:
- 您可能有不匹配版本的 React 和呈现器(例如React DOM)
- 您可能正在违反钩子规则
- 您可能有多个副本的 React 在同一个应用程序中。有关如何调试和解决此问题的提示,请参见 https://reactjs.org/link/invalid-hook-call]
那么我是否可以在saga中使用它?如果是, 我应该如何使用它?如果不行, 你能给我建议一个解决方案吗?
最终的解决方案是来自saga中的props message。
这是我 'toast.js' 文件中的一个函数:
export function toastLoginSuccess() {
ToastAndroid.show(
LANGUAGES.toastLoginSuccess,
ToastAndroid.SHORT,
ToastAndroid.TOP,
);
}
采用以下方式导入语言文件: import * as LANGUAGES from '../asset/language';
toastLoginSuccess
的值为export const toastLoginSuccess = '登录成功!';
我希望将其更改为const LANGUAGES = React.useContext(LanguageContext).language;
Saga是类似于以下结构的文件:
export function* fetchSigninSaga(action) {
try {
// ...
yield Toast.toastLoginSuccess())
} catch (error) {
// ...
yield Toast.toastLoginFail();
}
}