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>
)
}
添加回答
舉報