javascript - 如何在加载时调度 redux 钩子 useDispatch(而不是单击按钮)?
问题描述
我有以下代码(App.tsx):
import React from 'react';
import './App.css';
import { useSelector, useDispatch } from 'react-redux';
import { getAllMovies } from './redux/actions/movie';
import { Movie } from './redux/interfaces/movie';
function App() {
const movies = useSelector((state: any) => state.movies);
const dispatch = useDispatch();
return (
<div className="App">
<button onClick={() => dispatch(getAllMovies())}>Get all movies</button>
{movies.items.map((movie: Movie) => <div>{movie.title}</div>)}
</div>
);
}
export default App;
当我单击按钮时,它成功地从 redux 存储加载数据。但是,我不想在单击按钮时加载数据。
你能告诉我如何在页面加载时加载数据吗?
解决方案
您可以useEffect
为此目的使用钩子。
尝试以下操作而不是按钮onClick
事件:
useEffect(() => {
dispatch(getAllMovies());
}, []);
从useEffect
文档中查看:
如果您熟悉 React 类生命周期方法,您可以将
useEffect
Hook 视为componentDidMount
、componentDidUpdate
、 和componentWillUnmount
组合。
+1 建议:
需要空的依赖数组,因为它只在技术上在加载事件上运行一次useEffect
具有所需数据获取操作的回调。
我希望这有帮助!
推荐阅读
- swift - Swift - 如何语音基本运算符 - 符号(+,-,×)?
- javascript - iframe 上的事件“加载”成功触发,但 iframe 无法定位
- javascript - 收到错误“类型'void'不可分配给类型'ReactNode'”
- javascript - 如何在 Number to Word 转换中添加美分
- google-chrome-extension - 如何修复chrome扩展代码js中的错误
- javascript - vanilla javascript onload点击模拟
- dialogflow-es - 两条错误消息(关键字)后的 Dialogflow / 错误
- objective-c - Xcode 是否将注释代码构建到其二进制文件中?
- javascript - 如何解析里面的内容
? - c++ - IplImage 上的半透明对象