Javascript 如何在react外部调用/执行功能组件的函数?

Javascript 如何在react外部调用/执行功能组件的函数?,javascript,reactjs,react-native,axios,Javascript,Reactjs,React Native,Axios,我有一个名为加载器的自定义组件: export const ModalLoader = props=>{ const { loading, ...attributes } = props; const [isModalOpened, setModal] = useState(props) const closeModal = ()=>{ setModal({loading:false}) } return( <Moda

我有一个名为
加载器的自定义组件

export const ModalLoader = props=>{
  const {
    loading,
    ...attributes
  } = props;

  const [isModalOpened, setModal] = useState(props)
  const closeModal = ()=>{
    setModal({loading:false})
  }

  return(
    <Modal
      transparent={true}
      animationType={'none'}
      visible={isModalOpened.loading}
    >
      //my Loader view
    </Modal>
  )
}
错误详细信息:


有没有办法从
axios
实例调用
closeModal()
。然后您可以在任何其他组件中使用

我建议使用上下文。然后您可以在任何其他组件中使用

我建议改用事件系统。Ie在axios回调中发送ModalLoader正在侦听的事件。这样,您就不必担心访问组件外部的组件函数。它还有助于使代码的不同部分保持独立(一部分不会依赖于另一部分),因为您不能像这样访问组件的方法。如果在组件内部定义拦截器(严重怀疑),则可以从组件的主体传递此函数的引用。但是您可能不想设置一个全局状态(例如使用redux)并分派一个操作来更改模式的状态。我使用react navigation作为navigate,并且这个库能够在react组件之外传递导航道具的功能,例如,因此我可以使用
NavigationService.goBack()
,我的案例与此类似。但是我不知道如何像react导航那样处理ref。你应该使用useEffect钩子来设置模式,即setModal。将setModal封装在Useffect中,我建议使用事件系统。Ie在axios回调中发送ModalLoader正在侦听的事件。这样,您就不必担心访问组件外部的组件函数。它还有助于使代码的不同部分保持独立(一部分不会依赖于另一部分),因为您不能像这样访问组件的方法。如果在组件内部定义拦截器(严重怀疑),则可以从组件的主体传递此函数的引用。但是您可能不想设置一个全局状态(例如使用redux)并分派一个操作来更改模式的状态。我使用react navigation作为navigate,并且这个库能够在react组件之外传递导航道具的功能,例如,因此我可以使用
NavigationService.goBack()
,我的案例与此类似。但是我不知道如何像react导航那样处理ref。你应该使用useEffect钩子来设置模式,即setModal。将setModal包装在Useffect挂钩内
AxiosHttp.interceptors.response.use((res)=>{
  //tried to call closeModal()
  ModalLoader.closeModal()
  CustomLog(res.data, 'Interceptor')
  return res.data;
},(err)=>{
  CustomLog(err, 'Interceptor Error')
  if(err.message == 'Network Error'){
  return Promise.reject(err)
})

export default AxiosHttp