Javascript Axios、UseEffect、Redux
为什么这个有用的效应在有限的循环中Javascript Axios、UseEffect、Redux,javascript,reactjs,redux,react-redux,use-effect,Javascript,Reactjs,Redux,React Redux,Use Effect,为什么这个有用的效应在有限的循环中 useEffect(() => { async function fetchApi() { let res = await Axios.get(props.url + '/articles') props.loadArticles(res.data) } fetchApi() }) 知道组件一直连接到redux const mapStateToProps = (state) => ({
useEffect(() => {
async function fetchApi() {
let res = await Axios.get(props.url + '/articles')
props.loadArticles(res.data)
}
fetchApi()
})
知道组件一直连接到redux
const mapStateToProps = (state) => ({
url: state.ApiReducer.url,
articles: state.ApiStocksReducer.articles
})
const mapDispatchToProps = (dispatch) => ({
loadArticles: (data) => dispatch(loadArticles(data)),
updateSelectedArticle: (data) => dispatch(updateSelectedArticle(data)),
updateGeneralArticle: (data) => dispatch(updateGeneralArticle(data))
})
export default connect(mapStateToProps, mapDispatchToProps)(Articles);
有条件地激发效果效果的默认行为是
在每次完成渲染后激发效果。这样就产生了一种效果
如果其中一个依赖项发生更改,则始终重新创建
然而,在某些情况下,这可能是矫枉过正。我们不需要创建一个新的
每次更新时的订阅,仅当源道具已更改时
要实现这一点,请将第二个参数传递给useEffect,该参数是
效果所依赖的值的数组
可能是因为
props.loadArticles(res.data)
更新了映射到props的redux状态,并导致组件重新渲染并再次运行效果(冲洗和重复),因为效果没有依赖项数组。您实际希望效果何时运行并获取数据?
useEffect(() => {
async function fetchApi() {
let res = await Axios.get(props.url + '/articles')
props.loadArticles(res.data)
}
fetchApi()
}, []);