Reactjs 在React/Redux中,如果函数组件正在使用Redux thunk分派函数,它如何设置ISLOADING()?

Reactjs 在React/Redux中,如果函数组件正在使用Redux thunk分派函数,它如何设置ISLOADING()?,reactjs,react-component,Reactjs,React Component,我认为我们使用redux thunk的原因是,我们可以在定义mapDispatchToProps()时分派函数。(通常,通过让actionCreator()返回函数) 但是,假设我们正在使用一个函数组件,当我们分派一个函数来加载数据时,似乎没有办法使用来自 const [isLoading, setIsLoading] = useState(false); 因为setIsLoading在函数组件中,您不能在mapDispatchToProps()中使用它 似乎一种方法是使用 <butto

我认为我们使用redux thunk的原因是,我们可以在定义
mapDispatchToProps()
时分派函数。(通常,通过让
actionCreator()
返回函数)

但是,假设我们正在使用一个函数组件,当我们分派一个函数来加载数据时,似乎没有办法使用来自

const [isLoading, setIsLoading] = useState(false);
因为
setIsLoading
在函数组件中,您不能在
mapDispatchToProps()
中使用它

似乎一种方法是使用

<button onClick={() => {setIsLoading(true); props.dispatchGetData(setIsLoading)}}>
{setIsLoading(true);props.dispatchGetData(setIsLoading)}>
这是第一个
setIsLoading(true)
并将
setIsLoading
传递给
dispatchGetData()
,以便以后在接收数据或接收失败时调用
setIsLoading(false)


这是正确的方法还是什么是正确的方法?似乎我们也可以使用
useffect()
,我们可以直接执行
fetch()
,并且不会分派任何函数,因此,不使用redux thunk?

您可以
useffect
检查返回组件的数据是否已更改

大概是这样的:

useEffect(() => { 
    setIsLoading(false);
}, [props.data])

官方的异步示例一直在存储中加载值,并根据reducer中的特定操作进行更新:它的编写方式与我所想的不同。。。当用户选择一个主题时,我会调度一个函数来执行
fetch().then().then(data=>dispatch({type:'GOT_data',data:data})
现在它只是为主题调度一个状态,并让
componentdiddupdate()
处理
fetch()
…我想知道我的方式是否不被推荐…我不是说你的方式不被推荐。根据你的需要,从商店下载到这个即时组件之外使用可能会有所帮助。嗯…事实上,如果我仔细阅读该示例代码,它就像一个意大利面一样…如此多的条件,如此多的代码行代码,只需从两个reddit主题中选择一个并显示列表。将其设置为true的部件如何?单击按钮时可以进行设置,对吗?
{setIsLoading(true);props.dispatchGetData(setIsLoading)}}>