reactjs React use在生产中卸载时触发效果

6g8kf2rb  于 2023-03-01  发布在  React
关注(0)|答案(1)|浏览(109)

我正在运行一个React(Typescript)应用程序,它有一个dotnet后端,在本地运行正常,但是一旦我把它部署到Azure上,我的useEffect钩子就开始不正常了。

const getContacts = useCallback(
      () => {
        getAvailablePartnerContacts(id!.toString()).then(
            partnerContacts => {
                const _partnerContacts = partnerContacts.map(
                    pContact => ({
                        value: pContact.id|| "",
                        key: `${pContact.firstName} ${pContact.lastName}`
                    })
                );
                debugger;
                const allContacts = [...contacts, ..._partnerContacts]
                setContacts(allContacts)
                setPreselectedId(props.selectedPartnerContactId || "None");
            })
      },[])
    
    //load data
    useEffect(() => getContacts, [getContacts])

在localhost下运行良好,但在部署版本中,只有当我点击浏览器中的后退按钮时,这个debugger才会触发。我甚至无法在本地重现这个问题。有人有过类似的经历吗?

sr4lhrrt

sr4lhrrt1#

在您的示例中,您返回的是getContacts,这意味着您调用的组件没有卸载。请考虑执行以下操作:

useEffect(() => {
   getContacts()
}, [])

相关问题