useFetcher
路由定义中的loader
方法和action
方法一般都是路由在加载之前和路由中的表单提交时被调用的,这种调用一般伴随着页面的重新刷新。但是有的时候可能需要在应用中手动调用loader
方法和action
方法,而且并不需要引起页面的重新刷新。此时就需要用到 React Router 中提供的一个新 Hook:useFetcher()
。
useFetcher()
提供了内容供使用,例如有const fetcher = useFetcher();
:
fetcher.submit(data, options)
,用于调用action
方法,提交表单数据。其中data
中为表单提交的内容,options
可以使用一下配置项目。method
,表单的提交方法。action
,表单的提交目标路径。
fetcher.load(href)
,用于调用指定路径对应的路由的loader
方法。但是需要注意,.load()
方法只能调用其上下级路由的loader
方法。fetcher.Form
,这是一个会调用fetcher.submit()
的Form
组件,它的提交动作不会引起页面刷新。fetcher.state
,当前fetcher
的执行状态。fetcher.data
,用于访问fetcher.load()
获取到的数据。fetcher.formData
,用于访问fetcher.submit()
提交的数据。fetcher.formAction
,用于访问fetcher.Form
配置的action
目标。fetcher.formMethod
,用于访问fetcher.Form
配置的表单提交方法。