如何全局访问rtk查询功能
How to access rtk query function globally
我使用RTK查询,想注册
如果用户点击提交,那么按钮应该命名为“isLoading...”。
那我该怎么做呢?
所以我无法从 useRegisterQuery 访问 isLoading,如果我把它放在函数之外,它会直接操作
const Register = () => {
const [input, setInput] = useState('');
const submitForm = () => {
const { data, error, isLoading } = useRegisterQuery();
}
return (
<View>
<TextInput value={input} onChangeText={(e) => setInput(e)} />
<Pressable>
<Text>{isLoading ? 'isLoading' : 'Register'}</Text>
</Pressable>
</View>
)
};
不要在常规 javascript 函数中使用 hook。阅读为什么 here.
我会让 useRegisterQuery 也 return 一个你在按下按钮时调用的 submitForm 函数。
您不能根据某个操作调用挂钩 conditionally/programmatically,例如提交表单按钮。与 Alvar 的建议类似,请参阅 https://reactjs.org/docs/hooks-rules.html#only-call-hooks-at-the-top-level 了解规格。
要解决此问题,您只需移动挂钩,使其始终指向函数作用域的顶层 运行。
您可能会看到 similar/the 与控制台错误“渲染的钩子比上一次渲染期间更多的钩子”的相同问题。
const Register = () => {
const [input, setInput] = useState('');
const { data, error, isLoading } = useRegisterQuery();
const submitForm = () => {
// Do whatever with data, error, isLoading ect
}
return (
<View>
<TextInput value={input} onChangeText={(e) => setInput(e)} />
<Pressable>
<Text>{isLoading ? 'isLoading' : 'Register'}</Text>
</Pressable>
</View>
)
};
我使用RTK查询,想注册
如果用户点击提交,那么按钮应该命名为“isLoading...”。
那我该怎么做呢?
所以我无法从 useRegisterQuery 访问 isLoading,如果我把它放在函数之外,它会直接操作
const Register = () => {
const [input, setInput] = useState('');
const submitForm = () => {
const { data, error, isLoading } = useRegisterQuery();
}
return (
<View>
<TextInput value={input} onChangeText={(e) => setInput(e)} />
<Pressable>
<Text>{isLoading ? 'isLoading' : 'Register'}</Text>
</Pressable>
</View>
)
};
不要在常规 javascript 函数中使用 hook。阅读为什么 here.
我会让 useRegisterQuery 也 return 一个你在按下按钮时调用的 submitForm 函数。
您不能根据某个操作调用挂钩 conditionally/programmatically,例如提交表单按钮。与 Alvar 的建议类似,请参阅 https://reactjs.org/docs/hooks-rules.html#only-call-hooks-at-the-top-level 了解规格。
要解决此问题,您只需移动挂钩,使其始终指向函数作用域的顶层 运行。 您可能会看到 similar/the 与控制台错误“渲染的钩子比上一次渲染期间更多的钩子”的相同问题。
const Register = () => {
const [input, setInput] = useState('');
const { data, error, isLoading } = useRegisterQuery();
const submitForm = () => {
// Do whatever with data, error, isLoading ect
}
return (
<View>
<TextInput value={input} onChangeText={(e) => setInput(e)} />
<Pressable>
<Text>{isLoading ? 'isLoading' : 'Register'}</Text>
</Pressable>
</View>
)
};