3 回答
TA贡献1877条经验 获得超1个赞
Hooks 只能在渲染组件时调用,因此它们需要位于组件的主体中。
export const DataInput = () => {
const firestore = useFirestore();
const Post = (testTitle, testText) => {
firestore.collection('schedule-data').doc('test').set({
testTitle: testTitle,
testText: testText
})
}
// etc
}
TA贡献1827条经验 获得超9个赞
根据您的代码示例,我可能会建议testTitle, testText以DataInput某种方式提供,因此您可以使用useCallback. React 将创建回调以用作处理程序,并且仅在testTitle, testText更改时重新创建。
import {useCallback} from 'react';
export const DataInput = () => {
const makePost = useCallback(() => {
useFirestore().collection('schedule-data').doc('test').set({
testTitle: testTitle,
testText: testText
})
}, [testTitle, testText]);
return (
<Button
variant="primary"
onClick={makePost}
{/* Avoid inline callback declaration */}
>
POST data
</Button>
)
}
添加回答
举报